设置对象属性处理时Mex-function性能

1视图(30天)
我遇到了一个令人沮丧的拖延matlab处理对象属性设置在一个mex-function后执行。下面是如何繁殖:
> >墨西哥人mexperftest.cpp
建筑与“MinGW64编译器(c++)”。
墨西哥人成功完成。
> > obj = Perftest ();
> >抽搐;j = 1:20 00, mexperftest (obj);结束;disp (toc);
0.1539
手术只需要0.15秒在我的电脑是好的,但matlab提示只出现在大约3秒延迟。你可以测量这个延迟,如果你输入“toc”在命令提示符中延迟:
> > obj = Perftest ();
> >抽搐;j = 1:20 00, mexperftest (obj);结束;disp (toc);
0.1424
toc
运行时间是3.065224秒。
Perftest只是一个处理对象的一个属性和mexperftest函数分配值这个属性。
Perftest.m:
classdefPerftest <处理
属性
道具
结束
结束
mexperftest.cpp:
#包括“mex.hpp”
#包括“mexAdapter.hpp”
使用名称空间matlab:数据;
使用matlab:墨西哥人::ArgumentList;
MexFunction:公共matlab::墨西哥人:函数{
公众:
std::要查看< matlab::引擎::MATLABEngine > matlabPtr;
ArrayFactory工厂;
无效操作符()(ArgumentList输出,ArgumentList输入){
matlabPtr = getEngine ();
ObjectArrayobj(输入[0]);
matlabPtr - > setProperty (obj, u“道具”,factory.createScalar <双> (1.0));
}
};
我注意到的是,它与matlab分析器配置这种延迟是不可能的。看起来像Matlab下罩释放资源之类的东西,我不知道如何解决。延误的数量成正比属性分配和函数调用的数量。因此,它扩展时无法忍受任何真正的项目。所以,问题是,我们能做些什么。
6个评论
Kolar 1月:
Kolar 1月: 2022年1月6日
我遇到了类似的问题。我的墨西哥人函数是一个更加复杂。之后我与c++墨西哥人取代了matlab脚本功能我发现新的实现需要或多或少相同的时间来计算的东西。对于一些数据输入比Matlab c++实现更慢!这对我来说是惊喜。我描述我的代码使用Visual Studio,发现大部分时间计划在getProperty和setProperty功能!我用Matlab核心交换的数据量很低- 121短字符串和几百双打。

登录置评。

答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!