Является ли функция matlab mex быстрее, чем общий объект /DLL?

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

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

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

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

Спасибо

1 ответ

Решение

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

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

Другие вопросы по тегам