matlab性能分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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')。

相关文档
最新文档