Является ли функция matlab mex быстрее, чем общий объект / DLL? - PullRequest
1 голос
/ 13 декабря 2011

Я должен сделать некоторые вычисления в Matlab. Он уже реализован в файле m, но работает довольно медленно, поскольку существует много циклов. Идея состоит в том, чтобы скомпилировать нативный код и использовать этот код в Matlab.

Теперь у меня есть две возможности:

  • Запись общего объекта (.so od .dll-файла), который загружается в Matlab динамически
  • Запись функции C (++) - MEX

В первом случае matlab выполняет интерфейс с нативными типами данных и т. Д., Во втором случае я должен сделать это самостоятельно. Вопрос сейчас: что быстрее / лучше? Я могу сделать и то и другое, но я хочу набрать как можно больше скорости.

Спасибо

1 Ответ

2 голосов
/ 13 декабря 2011

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

Однако использование MEX-файла, вероятно, приведет к более прозрачному, читабельному и поддерживаемому коду, поскольку функция будет выглядеть так, как будто это собственная команда MATLAB. Я бы подумал, что, если производительность не является главным требованием, это соображение, по крайней мере, так же важно, как и скорость.

...