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杀毒软件等后台程序。