哪一个更快?使用matlab .m文件或​​其.dll版本?

时间:2013-12-07 07:31:58

标签: dll matlab

我正在运行算法,这需要花费大量时间来执行(大约24小时!)。我只是想如果我从我的.m文件创建一个.dll然后运行它,它会比它快得多吗?这是一个好主意还是只是浪费时间:)。感谢您的任何评论。

3 个答案:

答案 0 :(得分:3)

检查此link,其他人也建议使用matlab-coder

我自己有经验从C代码创建一个mex文件,可以通过matlab代码调用,而且速度非常快(我想与独立的C代码速度相似)。

答案 1 :(得分:2)

这取决于您的代码,请参阅此link。如果你已经使用向量化操作,预分配矩阵和转换后的分数对乘法进行了充分优化,那么下一步就是运行分析器以查看代码的哪些部分占用了大部分时间并专注于那些。

我发现将我的问题分成批处理并在他们自己的每个核心专用的matlab实例中运行它们有很大帮助。

如果完成所有这些仍然需要太长时间,那么考虑投入时间来使用mex。当然,现在将代码移植到C / C ++中需要花费一定的时间。

答案 2 :(得分:0)

简短的回答是否定的,这不是一个好主意,是的,这可能是浪费时间。 MATLAB编译器实际上并不将M文件编译成机器代码,只是将它们包装成独立的可执行文件并加密它们。有关详细说明,请参阅此页:http://www.mathworks.com/matlabcentral/answers/94695

另一方面,编写一个在C中执行相同计算的mex函数,可以将性能提高几个数量级。对于某些类型的代码,我经历了几百次的增加。请参阅此参考资料,了解如何编写mex函数:http://www.mathworks.com/help/matlab/create-mex-files.html