2011-12-13 75 views
1

我必须在matlab中做一些计算。它已经在一个m文件中实现,但由于有很多循环,所以运行速度很慢。这个想法是编译本地代码并在matlab中使用这些代码。是matlab mex函数还是共享对象/ DLL更快?

现在我有两种可能性:

  • 写共享对象(的.so OD .dll文件),其是负载到MATLAB动态
  • 写C(++) - MEX函数

在第一种情况下,matlab执行到本地数据类型等的接口,在后一种情况下,我必须自己做。现在的问题是:什么更快/更好?我可以同时做这两件事,但我想尽可能地获得更快的速度。

感谢

+0

除非你在外部代码中只做了一个微不足道的计算,否则应该没有性能差异。使用哪个更适合手头的任务。 –

回答

2

我会认为有通常是在加载时间和函数调用的开销小的改进使用MEX文件时,但如果来电的号码是相对于被执行的计算低,整体表现差异可能并不大。

但是,使用MEX文件很可能会导致更透明,更易读和更易维护的代码,因为该函数看起来就像是本地MATLAB命令。我认为,除非性能是最重要的要求,否则这一考虑至少与速度同等重要。