2015-12-15 2 views
-1

Я реализовал классификатор Naive Bayes. В Matlab моя функция классификации занимает 2 минуты, а октава занимает 25 минут для запуска того же кода. Кто-нибудь знает, что заставляет ocatve работать медленнее, чтобы я мог настроить мой код соответственно?Разница в вычислениях Matlab и Octave

PS: Я должен отправить сервер, который работает октавой, а не Matlab.

+1

Вам нужно будет опубликовать свой код. Но одна вещь заключается в том, что в новых версиях MATLAB есть JIT-компилятор, который фиксировал много неэффективности 'for'-loops и Octave пока этого не делает. Поэтому, если у вас есть несколько циклов, ваш октавный код может выиграть от векторизации. – Dan

+0

Да, мой опыт также в том, что недавний компилятор JIT в MATLAB удаляет большую часть исторической выгоды от векторизации вашего кода. Если его очень сильный цикл, он все равно будет страдать от замедления цикла в октаве. –

ответ

1

Matlab делает много «скрытой» оптимизации при запуске вашего кода (возможно, Octave тоже, но разные). Многие из этих оптимизаций, например, что параметры для функций не копируются, если вы не изменяете эти параметры в функции, а вместо этого передаете по ссылке. Это может значительно ускорить вычисления, когда вы, например, пройдите вокруг больших матриц, так как в противном случае большая часть вашего вычислительного времени тратится на копирование. Есть много и много подобных оптимизаций, и не все из них документированы вообще.

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

+0

Да, есть профайлер с Octave 3.6 (выпущен в январе 2012 года), реализованный Даниэлем Крафтом. Вот [слайд-презентация, показывающая профилировщик] (http://wiki.octave.org/wiki/images/c/cd/OctConf-2015-Slides-Profiling.pdf) на OctConf 2015, и, конечно, [раздел руководства для отладка] (https://www.gnu.org/software/octave/doc/interpreter/Debugging.html). – carandraug

Смежные вопросы