【发布时间】:2016-05-03 11:57:39
【问题描述】:
我个人喜欢高级编程语言。对于概念验证的东西,MATLAB 很棒。此外,您可以使用 MATLAB 轻松可视化几乎所有内容。
但是,为了速度,我经常需要编写 C 或 C++ 代码。不过,C/C++ 中的可视化是一件令人头疼的事情。在一个理想的世界里,我想要 C/C++ 速度的 MATLAB 可视化工具。对我来说,这意味着我应该 MEX 必要的 C/C++ 函数,然后从 MATLAB 脚本中调用它们,使用 MATLAB 的工具来执行可视化。理想情况下,这给了我两全其美。但是,我不想因为通过 MEX 文件调用函数而导致 C/C++ 运行时间变慢。
当调用 C/C++ 函数作为编译的 MEX 函数时,我是否会牺牲 10x-100x speed gains of C++?也就是说,从 MATLAB 脚本调用的 mexFunction(param1, param2) 是否一定比运行编译后的二进制文件运行得慢?
【问题讨论】:
-
mex 文件是经过编译的二进制文件。您的第二段,去掉了最后一句,是 the 编写 mex 文件的原因。
-
从 mxArray 获取指向数据的指针的开销可以忽略不计,以便可以将其作为 C 数组进行操作(或传递给现有/其他 C 函数)。
-
@PhilGoddard:简而言之,您对我的问题的回答是:不。从 MATLAB 调用我几乎没有牺牲任何东西。只是想澄清一下。
-
这可能有点离题,但在 MEX 环境中维护 C++ 对象并非易事。
标签: c++ c performance matlab