Сделать цикл эффективным в коде Matlab: используйте C или подойдет Java? - PullRequest
2 голосов
/ 22 октября 2010

Я хочу ускорить некоторый код Matlab, включающий цикл. Распространенным решением является кодирование цикла в C и вызов его из matlab. Тем не менее, мне было интересно, смогу ли я получить аналогичные преимущества от реализации цикла в Java - возможно, компиляция точно в срок делает это быстрее?

Ответы [ 2 ]

4 голосов
/ 22 октября 2010

Перед началом работы с внешним кодом: вы предварительно распределили свои переменные?Можете ли вы векторизовать свой цикл?Хотя компилятор Matlab «точно в срок» с годами стал намного лучше, все же есть случаи, когда векторизация приносит значительные улучшения.Кроме того, обратите внимание, что довольно много функций Matlab (те, для которых вы не видите код при открытии их в редакторе) реализованы на C или Fortran, поэтому вы можете не наблюдать резкого увеличения скорости.

Если вы не можете ускорить свой код Matlab, лучше написав его на Matlab, и если кажется, что переопределение может принести вам какую-то выгоду, то C может быть самым быстрым, хотя Java может не слишком отставать (опять жена код, который вы хотите ускорить - это может быть хорошей идеей, если вы разместили его здесь).Если вы гораздо лучше знакомы с Java, чем с C, я предлагаю попробовать пойти по маршруту Java.

1 голос
/ 22 октября 2010

Люди на SO всегда готовы помочь в оптимизации кода. После того, как вы заметили отнимающий много времени раздел кода по profiling , вы можете опубликовать фрагмент кода здесь

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

...