【问题标题】:how to improve matlab code when the bottle neck is some MEX-file?当瓶颈是一些 MEX 文件时如何改进 matlab 代码?
【发布时间】:2015-08-23 00:32:06
【问题描述】:

我对 matlab 分析工具不太熟悉。但由于我的 matlab 程序运行时间太长,我被建议尝试分析它。当我这样做时,我得到的结果是大部分运行时间(自我时间)都花在了一个我没有在我的代码中编写的函数中,名称为:mupadmex(MEX-file)(调用了 17266 次) .这是否意味着我不能做任何事情来改善我的代码的运行时间?

【问题讨论】:

  • 您可以尝试通过查找冗余调用来减少对mupadmex 的调用次数。

标签: matlab


【解决方案1】:

三个解决方案,对这个问题不了解

减少通话量

试着去掉这个mex函数的调用量,可能有些调用是多余的?

了解它的作用

也许你知道那个函数是做什么的,你可以写一个更有效的方法来做同样的事情?

更改该功能

如果你能得到那个 mex 函数的代码,你可以尝试自己改进它。

【讨论】:

  • 我不知道这个 mex 函数在哪里被调用。我没有直接从我的代码中调用它,我不知道它做了什么。我怎么知道它为什么被调用或它做了什么? - 探查器报告没有将我引用到我的 .m 文件中的代码行。
  • 那我猜你做错了什么。通常配置文件显示所有直接调用的正在运行的进程,例如你启动profile on,然后运行myscript,然后运行profile viewer,然后它会显示`myscript的所有行,你可以点击所有行来分析子函数,还有mex(但是,只有mex调用而不是编译的代码ofc )
  • 我就是这样做的,我得到的是:
  • 我就是这样做的,我得到的是一个包含函数名称、调用、总和自身时间的表。这个列表中的一个函数是一个名为 "mupadmex (MEX-file)" 的函数,我没有在我的代码中编写它。当我单击此函数并返回调用函数时,我终于找到了我在代码中调用的 matlab 函数 erfi。我需要这个函数来为 3D 数组的每个元素计算一些反导数。我不知道自己实现这个erfi功能。有什么办法可以让它跑得更快吗??
猜你喜欢
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 2019-01-11
  • 1970-01-01
  • 2014-10-28
相关资源
最近更新 更多