为什么mex代码的运行速度比matlab代码慢得多

时间:2013-08-07 02:07:53

标签: c matlab mex performance matlab-coder

我使用matlab编写了一个包含很多迭代的程序。它不能被矢量化,因为每次迭代中的数据处理与前一次迭代中的数据处理有关。

然后我使用内置的MATLAB编码器将matlab代码转换为mex,结果速度更低。我不知道是否需要自己编写mex代码,因为似乎mex代码没有帮助。

1 个答案:

答案 0 :(得分:0)

我建议如果可以的话,您可以与MathWorks联系,向他们寻求建议。如果你无法做到这一点,那么我建议你仔细阅读文档并尝试放弃之前找到的所有内容。

我发现,一些小的改动,以一个实现MATLAB代码的方式,以及一些小的改动,以项目设置(如禁用响应为Ctrl-C,外在回调MATLAB)可以得到生成的代码中的一个数量级或更多的速度差。 MathWorks之外的人并不是很多,他们能够就确切的变化对你有什么改变给出好的建议。

我应该说我在一个项目中只使用了MATLAB Coder,而我并不是一个专家(实际上甚至不是一个称职的)C程序员。尽管如此,我已经成功地生成了C代码,它的速度比原来的MATLAB代码快10-15倍。我实现了由一)与所有不同的设置,只是摆弄,看看发生了什么和b)通过文档有条不紊地去,看是否有在我的MATLAB代码,我可以申请任何我碰到的结构的场所(如coder.nullcopycoder.unroll等)。当然,您的代码可能会有很大不同。