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-toctStart =tic;pause(some_time);tElapsed_toc =toc(tStart)%% example 2: time measured by tic-tictStart =tic;pause(some_time);tElapsed_tic =double(tic-tStart) /1000000%% example 3: time measured by tic-tocstStart =tic;pause(some_time);tElapsed_toc1 =toc(tStart)some_time =rand *2pause(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 offprofile -history -historysize 8-timer realonprofile('status')magic(8);=profile('info')hs =p.FunctionHistory

FunctionHistory是记录程序进入和退出的2×N的数组(N不大于historysize设置的数),第一行中0表示进入,1表示退出,第二行表示对应的函数id,可用p.FunctionTable(id).FunctionName查看相应的函数名。关闭history功能的参数是nohistory(HistoryTracking: 'off')。
(2)以web报告形式查看:profile viwer,profile viwer的报告易懂(点击超链接可深入报告内部),如下图所示:
Matlab 程序性能(计算速度)分析方法_第1张图片

当使用profile viwer查看时,Profiler自动关闭(ProfilerStatus: 'off')。

(3)profile on 与 profile resume:on是清除以前的统计报告后开启Profiler;resume是在保留以前分析报告的基础上,profile viwer会展示以前的以及本次的信息。
4、保存Profiler的报告:profsave(profile('info'),'results_dir')
在results_dir目录中保存报告为file*.html文件。
5、在多核处理器的Linux平台上提高Profiler分析精度:多核平台上设定Matlab活跃的CPU为一个
Linux的命令行中设定:
(1)查看Matlab进程号:ps -C MATLAB
(2)查看Malab进程活跃的CPU:taskset -pc PID
(3)限定Matlab在某个CPU(如0)上活跃:taskset -pc 0 PID
Matlab中重新设定Profiler:profile -timer real(或cpu)
在性能分析完成后,记得把Matlab活跃的CPU设置回初始值,以免影响性能。

你可能感兴趣的:(matlab)