我刚刚用c++重写了一个Matlab程序作为一个mex函数来加快速度,得到了很棒的结果。这个优化决策是一个非常非常好的想法,在没有线程的情况下,速度提高了20倍。它仍然让我好奇地想知道mex-function花时间在做什么,并想找出可能的瓶颈。
我正在寻找一种分析mex函数的方法。matlab分析器用处不大,我下载的其他分析器(免费和试用版)都希望运行可执行文件。我不是mex专家,但据我所知,运行mex的唯一方法是在Matlab中运行。mex函数被编译成dll,但被称为.mex64。因此,这个问题应该类似于分析dll。为了编写c++ mex函数,我使用了单用户VS2005 (即,不是团队版本),并且运行在x64平台上。
有没有人知道分析mex函数的好方法?当我在Matlab中启动时,我应该使用什么工具以及如何使用它?或者,有没有其他方法来分析c++代码?
发布于 2009-08-14 09:51:53
我设法做到这一点的唯一方法是分离出执行此工作的函数,并编写一个单独的包装器(而不是mexFunction),该包装器加载带有测试数据的.mat文件,并作为独立的可执行文件运行。然后可以使用例如gprof对其进行分析
发布于 2009-08-15 20:19:07
有没有办法在VC集成开发环境下运行整个过程。就像你可以说“调试DLL Foo.dll,使用Matlab作为启动应用”。
然后,如果您在Foo.dll中使用的函数栏运行时间小于1秒,请确保多次调用它,或者在DLL中添加一个包装函数来多次调用它。
如果你能做到这一点,你就可以使用manual call stack sampling technique,尽管它并不流行,也不需要安装某个工具,但它确实可以正常工作。
发布于 2011-05-24 22:26:52
除了已经提出的很好的解决方案之外,还有两种可能的解决方案。
https://stackoverflow.com/questions/1276834
复制相似问题