matlab mex函数或共享对象/ DLL更快吗?

时间:2011-12-13 08:26:19

标签: performance matlab mex

我必须在matlab中做一些计算。它已经在m文件中实现,但运行速度很慢,因为有很多循环。我们的想法是编译本机代码并在matlab中使用此代码。

现在我有两种可能性:

  • 编写一个动态加载到matlab的共享对象(.so od .dll文件)
  • 编写C(++) - MEX函数

在第一种情况下,matlab执行与本机数据类型等的接口,在后一种情况下,我必须自己完成。现在的问题是:什么是更快/更好?我可以做到这两点,但我希望获得尽可能多的速度。

由于

1 个答案:

答案 0 :(得分:2)

我认为在使用MEX文件时,加载时间和函数调用开销通常会有小幅改善,但如果相对于执行的计算调用次数较少,则性能总体上存在差异可能不是那么好。

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