matlab性能分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab 程序性能分析
一、简单计算程序运行时间:tic,toc—— Measure performance using stopwatch timer
基本用法:tStart=tic; any_statements; tElapsed=toc(tStart);
计时单位是“秒”;tic用于设置计时器开始,toc设置计时器结束;手册说tStart是一个64位的整数,仅用于toc参数时有意义,经测试tic是微妙级的计时器。示例:
some_time = rand * 2
%% example 1: time measured by tic-toc
tStart = tic;
pause(some_time);
tElapsed_toc = toc(tStart)
%% example 2: time measured by tic-tic
tStart = tic;
pause(some_time);
tElapsed_tic = double(tic-tStart) / 1000000
%% example 3: time measured by tic-tocs
tStart = tic;
pause(some_time);
tElapsed_toc1 = toc(tStart)
some_time = rand * 2
pause(some_time);
tElapsed_toc2 = toc(tStart)
tElapsed_toc_toc = tElapsed_toc2 - tElapsed_toc1
示例1展示了tic-toc的基本用法,示例2展示了只用tic实现的计时功能,示例3展示了利用一个tic和多个toc实现程序的分段计时。
二、不推荐使用的程序计时工具:cputime 和 clock & etime
cputime的用法:t = cputime; any_statements; e = cputime-t
clock & etime的用法:t = clock; any_statements; e = etime(clock, t) Matlab推荐用tic-toc计时,而不是这两种计时工具,具体请参考帮助文档。
三、全面分析程序运行时间:Profiler
profile 只能分析Matlab代码编写的函数的运行时间(如ls,magic等),若函数非Matlab代码(如svd,dir等),无法分析其运行时间。
1、启动Profiler的三种方法
(1)从菜单栏启动:Desktop --> Profiler;
(2)从Matlab的Editor中启动:Tools --> Open Profiler;
(3)从命令行启动:profile -history -historysize integer-timer clock on
history:开启历史记录功能,记录程序的进入及退出;
historysize:设置历史记录的条数,默认的历史记录条数为1000000;
timer:设定计时器类别cpu或real,默认值为cpu;
on:打开Profiler。
2、查看Profiler的状态:profile('status') 和 profile('info')
当用 profile -history -historysize 8 -timer real on 开启Profiler后,用profile('status')参看的状态如下:
ProfilerStatus: 'on'
DetailLevel: 'mmex'
Timer: 'real'
HistoryTracking: 'on'
HistorySize: 8
如需更改Profiler的参数,须要在Profiler关闭的情况下(ProfilerStatus: 'off')进行,关闭Profiler的命令是profiler off。
3、查看Profiler的分析报告
(1)以数组形式查看:profile('info')
一段展示Profiler使用的示例:
profile off
profile -history -historysize 8 -timer real on
profile('status')
magic(8);
p = profile('info')
hs = p.FunctionHistory
FunctionHistory是记录程序进入和退出的2×N的数组(N不大于historysize 设置的数),第一行中0表示进入,1表示退出,第二行表示对应的函数id,可用p.FunctionTable(id).FunctionName查看相应的函数名。关闭history功能的参数是nohistory(HistoryTracking: 'off')。