Журнал LinuxFormat - перейти на главную

LXF109:Сравнение

Материал из Linuxformat
Версия от 12:44, 4 декабря 2009; Crazy Rebel (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Каждый месяц мы сравниваем тысячи программ – а вы можете отдыхать!

Содержание

Сравнение Числодробилки

Когда ни бумага с карандашом, ни калькулятор не справляются с расчетами, Уилл Трибби обращается к одной из математических программ.

В старые времена (1980-е) студентам ВУЗов разрешалось производить вычисления, расчеты линейной алгебры и т.п. с помощью калькуляторов – но не для всего, поскольку в основном полагались достаточными бумага и карандаш, а калькуляторы допускались лишь в особо сложных случаях. Аспиранты переходили уже к написанию собственных программ для численных расчетов, просиживая долгие часы перед терминалом за отладкой кода. Но был способ и получше.

То, что начиналось как библиотеки функций для решения численных задач, развилось в мощные, интерактивные и программируемые инструменты, «перемалывающие» сложные математические и инженерные проблемы за несколько минут. Эти платформы численных расчетов сегодня являются рабочими лошадками ученых и инженеров. Они используются практически в любой области современной науки и техники для управления данными, анализа и визуализации.

Золотой стандарт

Среди рассматриваемых здесь платформ, Matlab является золотым стандартом, с которым сравниваются все остальные инструменты. Это сравнение кажется неизбежным для любой платформы численных расчетов, свободной или нет. Однако, по сравнению с ними, Matlab имеет огромный недостаток – дороговизну. Выбор в пользу Matlab зависит от того, много ли дополнений вам нужно и готовы ли вы платить за них. Тем из нас, кто ограничен бюджетом, без мощной и свободной замены не обойтись.

При поиске альтернатив Matlab, две были уже наготове: Scilab и Octave. Обнаружение еще двух потребовало просеивания web-сайтов существующих проектов. Программы с последним обновлением старше года не рассматривались. В обзор попали наиболее обещающие и интересные решения, чьи сайты проявляют активность.

Про наш тест...

У платформ численных расчетов, включенных в это Сравнение, много общих функций. Значение имеет и производительность алгоритмов, что важно при работе с большими объемами данных.

Оценка выводилась по следующим факторам: простота установки, интерфейс пользователя, документация, поддержка сообщества и доступные инструменты. Производительность алгоритмов проверялась путем вычисления разложения по особым значениям (SVD) и по 100-кратному вычислению быстрого преобразования Фурье (FFT, БПФ) для матрицы действительных чисел размера 500х500, и вычисления среднего и стандартного отклонения этих ста попыток.

Тестирование проводилось на ноутбуке HP Pavilion dv5040us с процессором AMD 2,2 ГГц и ОЗУ 2ГБ, работающем под управлением Kubuntu 8.04. Все программы, кроме Matlab и Euler Math Toolbox, перед тестированием компилировались на ноутбуке.

Matlab

Когда вы заслужиаете (и можете позволить) самого лучшего.

Matlab в завидном положении: все прочие лишь догоняют его, поскольку это основная вычислительная платформа, используемая большинством ученых мира и технических сообществ. Matlab включен в технические и математические курсы многих университетов, разносящих его репутацию также и за свои пределы. Немного поработав в среде Matlab, вы понимаете, почему Matlab устанавливает планку, до которой другим прыгать и прыгать.

Прежде всего, Matlab предоставляет современную IDE для выполнения вашей работы. В ней есть окно команд, окно истории команд и менеджер файлов. Команды помечаются временем и датой, и вы можете выбрать команду или группу команд в окне истории, чтобы выполнить их вновь. Вероятно, тем, кто собирается создавать лишь мелкие приложения в несколько файлов, IDE не так уж и важна. В противном случае –это большой плюс. Matlab часто используют для создания больших и сложных приложений, требующих управления кодом. Ни одна из рассматриваемых в обзоре платформ и близко не подошла к IDE вроде той, что есть в Matlab.

Матричный язык Matlab легок в изучении, и, освоившись с векторами и матрицами, вы сочтете его очень естественным. Несложные матричные операции, требующие нескольких операторов, или запутанные перемножения, подразумевающие целую программу, могут выполняться совместно в одной строке кода. Базовая версия Matlab поставляется с умопомрачительным набором математических функций, с которым остальные продукты стараются идти в ногу. Не так давно в Matlab было добавлено объектно-ориентированное программирование, и это также возвышает его над большинством других платформ обзора. Данный функционал может облегчить создание больших и сложных приложений для тех, кто предпочитает объектно-ориентированный подход. Matlab также может сразу оснастить ваши приложения графическим интерфейсом, что делает разработку более последовательной, чем при добавлении его позднее.

Да он еще и быстр

Производительность – та область, где Matlab трудно удержать лидерство. В SVD-тесте – разложении матриц, важном для многих статистических и численных алгоритмов – производительность Matlab лишь на 20% больше, чем в Scilab или Octave. Удивительно то, что алгоритм Numpy, используемый в Sage, был в среднем быстрее Matlab на 250%. Он не включен в настоящее сравнение, но такое разительное отличие показывает, что в библиотеке Numpy для Python производительности уделено больше внимания. Зато Matlab победил в быстром преобразовании Фурье.

Следует отметить, что измерение производительности зависит от целого ряда факторов и для достоверности требует многокраных повторений. Наши измерения проведены лишь в целях относительного сравнения. Даже отличие в долях секунды может стать убийственным, когда объем вычислений становится больше или требуются тысячи повторений. Однако для небольших приложений или задач эти отличия производительности могут никогда и не возникнуть.

Еще один плюс Matlab – множество пакетов расширений (Toolbox), доступных в виде дополнительных надстроек для базового продукта Matlab. Они покрывают специфические области применения, вроде обработки изображений, вычислительной биологии и экономического моделирования и анализа, и сберегают кучу времени, когда нужен немедленный результат без изобретения велосипеда. MathWorks, изготовитель Matlab, поддерживает в сети сообщество пользователей, где они обмениваются кодом и помогают друг другу. Хотя некоторые другие платформы предоставляют пакеты расширений в стиле Matlab, доступные варианты в Matlab отлажены лучше, чем имеющиеся для свободных платформ.

Дорогое удовольствие

Matlab – потрясающий продукт, и после его тестирования для обзора мы очень расстроились, обнаружив, что он поставляется по заоблачной цене и с ежегодным взносом после первых 12 месяцев. Использование Matlab вне работы или университета, вероятно, чересчур дорого для большинства людей. Многие малые компании сочтут стоимость Matlab, при наличии свободных альтернатив, неоправданной – конечно, если только они не разрабатывают дополнения или сервисы для Matlab. Matlab – очевидный выбор для платформы численных расчетов, если вы можете его себе позволить и вам не нужна открытая лицензия. Иначе уж лучше обойтись чем-то свободным.

Книги

Для любителей пачек бумаги, испещренных черными закорючками, налицо огромный выбор. Если, зайдя в своей любимый магазин в сети, вы поищете книги, описывающие Matlab, вас ими просто завалят. Некоторые учебники по Matlab заодно описывают Scilab и Octave, но есть книги и исключительно о них. Часть книг просто дублирует документацию или учебники из сети, и иногда это удобно – особенно если вы хотите почитать в местах, где ваш ноутбук может быть в опасности. Единственная описываемая платформа, для которой мы не нашли книг – Euler Math Toolbox.

Octave

Естественно, есть GNU-альтернатива…

Начавшись как побочная идея работы инженеров-химиков в 1988 году, Octave вырос в сильную и недорогую копию Matlab, одну из наиболее известных свободных альтернатив Matlab с открытым кодом, и ныне старается добиться возможно лучшей совместимости с Matlab. Сайт Octave содержит подсказки по совместному использованию файлов пользователями Octave и Matlab.

На нашем тестовом ноутбуке Octave собрался и установился без сучка, без задоринки. Он запускается в окне оболочки, создающем ощущение некоторой пустоты. Однако, покопавшись, мы обнаружили на http://sourceforge.net проект Octclipse. Описание на сайте скудное, но, судя по названию и краткой справке, он основан на открытой IDE Eclipse. QtOctave – другая оболочка для Octave. Таким образом, вы можете заполучить IDE для вашего Octave, но это потребует дополнительных поисков и сборки. Однако, если одна IDE вам не понравилась, всегда можно попробовать другую.

Между базовым языком матриц Octave и языком Matlab имеются некоторые отличия. Для многих файлов программ совместимость – не проблема, но может стать таковой с добавлением объектно-ориентированного программирования в Matlab, если большинство пользователей возжелают эту функцию. В Wiki Octave имеется список функций последней версии Matlab (R2008a), отсутствующих в Octave; часть перечня, касающаяся объектов, содержит 50 пунктов. Если многие пользователи обзаведутся объектно-ориентированным Matlab – прощай, совместимость.

Теперь о хорошем: сайт проекта приводит список уникальных функций Octave. Одна из них – определение функций прямо в строке [inline]. При работе в командном окне данная функция облегчает паковку повторяющихся шагов более выгодным способом, чем написание и сохранение файла программы. В Matlab этого сделать нельзя. Другая приятная функция – использование одиночных или двойных кавычек для определения строк, как делается в Python. Еще одно действие, выполнимое в Octave, но не в Matlab – использование символа # для комментариев. То есть, размещение #! ./usr/bin/Octave -q в начале файла программы приведет к тому, что оболочка выберет Octave для ее запуска; тут просматриваются интересные варианты использования при развертывании приложений. Эти небольшие отличия могут показаться незначительными, но, вероятно, они были добавлены по велению сообщества Octave. Проекты вроде Octave более отзывчивы к запросам пользователей, чем корпоративный элемент вроде The MathWorks.

Приличная скорость

Было бы весьма печально, если бы выбор между свободной и проприетарной платформами означал провал в скорости ваших вычислений. Но Octave – не тот случай: он показал 80% производительности Matlab в тесте SVD и около половины скорости в тесте FFT. При вычислении FFT разница измеряется сотыми долями секунды. Неясно, что внутри Matlab отличает его от Octave (а также Scilab) и позволяет выжать эти сотые. Обнаружение мелких отличий и их ликвидация не проще поиска иголки в стоге сена, так как они обуславливаются множеством факторов, вроде использования памяти, загрузки процессора в момент тестирования, структуры данных и т.д. Главное, что производительность Octave более чем адекватна для любой задачи разумного объема.

На сайте http://octave.sourceforge.net вы найдете дополнительные пакеты для использования в Octave, являющиеся Octave-эквивалентами пакетов расширений (Toolbox) Matlab. Список весьма обширен, а охватываемые предметные области столь же многочисленны, что и для пакетов расширений Matlab. Широкий выбор специализированного кода, который можно получить и использовать без оплаты, в значительной степени обуславливает мощь свободного и открытого ПО. Для пользователей, ценящих свободу и выбор, Octave – образцовый проект.

Статистика

Если ваши интересы – в сфере статистических расчетов, возможно, вам стоит обратить внимание на проект GNU R, задуманный как свободное воплощение языка S, который разработан в бывшей Bell Laboratories (ныне Lucent Technologies). R для S – то же, что Octave для Matlab, но сосредоточен на статистике. R предоставляет удобные программы статистической обработки данных и построение статистических диаграмм и графиков, способных потребовать значительного кодирования даже на языке матриц вроде Octave. R можно найти по адресу http://www.r-project.org, а учебник по R можно найти на страницах LXF

Sage

Когда нужна серьезная математика.
Персональные инструменты
купить
подписаться
Яндекс.Метрика