0

在我的项目中,我有很多 MATLAB 函数。对于每个函数,我在应用程序启动时调用 Initialize 函数。我尝试使用 parallel_invoke 调用此函数。我试了几次,总是需要更多时间,没有这个的代码。有人可以解释一下吗?MATLAB 或 Initialize 函数中是否有特定内容?

4

1 回答 1

1

Matlab 运行时只有一个解释器线程,因此并行调用 Matlab 函数不会为您带来任何好处:当第一个函数 A 被调用时,MCR 获得一个锁,只有在该函数退出时才释放它。在此期间调用另一个函数 B 会导致尝试获取锁,然后显然会阻塞直到 A 完成。您看到它占用更多时间的原因可能是由于锁定/parallel_invoke 的开销。

我不确定您对我调用 Initialize 函数的每个函数的含义:除非您使用多个 Matlab dll(这将比拥有单个 dll 的性能低),您只需要调用它的 Initalize/Terminate 一次。

于 2013-08-31T09:01:11.283 回答