使用 Profiler 识别性能瓶颈

MATLAB Profiler 是一个用于 MATLAB 代码软件分析的工具。使用 Profiler,可以获得执行时间和内存消耗的直观表示。

运行 Profiler 可以通过两种方式完成:

  • 单击 MATLAB GUI 中的运行和时间按钮,同时在编辑器中打开一些 .m 文件(在 R2012b 中添加 )。

    StackOverflow 文档

  • 以编程方式,使用:

    profile on
    <some code we want to test>
    profile off
    

下面是一些示例代码及其分析结果:

function docTest

for ind1 = 1:100
  [~] = var(...
            sum(...
                randn(1000)));
end

spy

StackOverflow 文档

从上面我们了解到,spy 函数占总执行时间的 25%左右。在真实代码的情况下,占用如此大百分比的执行时间的函数将是优化的良好候选者,而不是类似于应该避免优化的 varcla 的函数。

此外,可以单击“ 功能名称” 列中的条目以查看该条目的执行时间的详细分类。这是点击 spy 的例子:

StackOverflow 文档

在运行 Profiler 之前,还可以通过执行 profile('-memory') 来分析内存消耗。

StackOverflow 文档