MatLab5.0以及更新版本包含了一个工具叫profile,这个工具帮助我们寻找代码中的性能瓶颈。

主要命令为:

1. profile on           打开profile工具

2. profile off           关闭profile工具

3. profile clear      清除profile统计信息

4. profile report    查看当前结果

比如下面代码:

function result = example1( count )
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
for k = 1: count
    result(k) = sin(k/50);
    if result(k)<-0.9
        result(k) = gammaln(k);
    end
end
end
分析这个函数的效率,首先要打开profile并清空profile的数据,之后运行这个函数,最后观察profile report。

profile on, profile clear;
example1(5000);
pforile report;

第一次运行的时候,代码需要有一些初始化操作,这是额外开销。

运行代码第二次,再对第二次的代码进行profile操作,能够得到更加准确的结果。

这时matlab产生对话框:


点击example1函数得到关于这个函数更加准确的信息。


说明第5,7行代码是这个函数的性能瓶颈。

检查性能瓶颈的时候,结果受限于时间分辨率。如果一段代码执行较快的时候,可以利用循环,多次执行此段代码。

次数越多,运行时间越大于时间分辨率才能得到更好的分析结果。


如果想要更精确的获得一段代码的运行时间可以使用tic/toc命令。

>> tic; example1(5000); toc;
Elapsed time is 0.067337 seconds.

为了得到更精确的CPU时间,你还要关闭其他应用程序,如浏览器,360杀毒软件等后台程序。