MATLAB社区

MATLAB,社区等

通过分析加速您的程序

我最初打算写关于MATLAB PROFILER,但是在这里浏览档案时,我意识到我们并没有真正谈论过分析!因此,是时候回到Matlab基础知识并谈论分析了。

剖面是几种动态分析工具之一。动态分析的最常见形式侧重于正确性。在该工作流程中,您运行代码并检查计算结果是否与预期结果匹配。如果不匹配,您要么对数据做出了一些错误的假设,要么在程序中有一个错误。您可以使用诸如MATLAB调试器M-lint找出问题。分析代码的一种较不常见的方法是查看效率,在这种情况下,运行需要多长时间(我们将在另一个时间进行内存)。Profiler可以让您运行一个程序,然后查看每行要执行多长时间。有了这些信息,您可以专注于优化最多时间的代码部分。

默认情况下,在桌面上看不可见分配程序。要获得它,请在桌面下使用桌面菜单 - > Profiler。这会带来Profiler窗口(看起来像Web浏览器)。

使用Destkop  - 个人资料打开MATLAB Profiler
MATLAB PROFILER

在Profiler的工具栏中,输入您要配置的MATLAB命令(如果是Web浏览器,则URL将在哪里进行)。您可以将多个MATLAB语句与“”或“;”相结合。这样,您可以在必要时设置输入。例如:a = rand(10);myfun(a)。输入函数以进行配置文件后,按Enter运行它们。我的示例使用以下功能暂时

功能z =一段时间为了i = 100:100:300 x = rand(i);y = rand(i);z =计算(x,y);结尾功能z =计算(x,y)z = conv2(x,y);暂停(2);

从下面的结果,我们可以看到运行一会儿在我的计算机上花了16秒钟(该工具栏上的黑色子弹旁边列出了时间)。在这16秒中,有14.823在该功能中花费了,几乎100%的时间在三个电话中花费了计算子功能。考虑到我的示例代码,此结果并不奇怪。请注意,14.823 <16.其他1.177秒发生了什么?“ 16秒”反映了从探查者开始停下来的时间到最接近的第二秒开始的时间。报告的14.823秒是运行该代码的CPU所花费的时间,并且不反映操作系统的开销或围绕配置文件函数发出的任何命令。

MATLAB PROFILER从一段时间

单击列出的功能或子函数将带您进入一个页面,该页面列出了有关该功能中每个代码的大量详细信息,包括:

  • 哪些功能称为功能以及多少次
  • 花费最多时间的单个线,包括执行行的次数以及在该行上花费了多少时间
  • 该功能调用了其他介绍的功能
  • M-LINT报告的任何警告,可以提供改善性能的建议
  • 覆盖范围摘要显示行运行的行数与未运行
  • 代码的颜色编码版本,显示了潜在的问题点。

在下图中,我们看到8.85秒的时间已在conv2和5.97秒暂停。在报告中提供的信息中,我知道我可以通过取消电话来获得40%的速度暂停,但我们看到conv2线更黑,这意味着我会通过改进这条线来获得更多的收益。由于此代码没有任何有用的作用,因此没有什么可以用它来代替它的。但是,在您自己的代码中,您可能会看到一种替换深红线或更少次数的方法。

按时间按函数线

对于Sumamrize来说,分析的工作流程是:

  1. 找到您希望加快的程序。
  2. 在Profiler中使用适当的输入运行该代码。
  3. 修复文件中与性能相关的任何M-LINT警告(如果尚未)。剖道师可以帮助您提供哪些最重要的警告。
  4. 查找代码花费最多时间的行,并尝试将该行较少次数,用更快的语句替换,或将代码分解为较小的问题。
  5. 重复直到没有任何改进为止。

参考器也可以使用MATLAB命令行运行轮廓命令。

编辑(02/01/10):修复了错字。

|

注释

要发表评论,请单击这里登录您的数学帐户或创建一个新帐户。