注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

极夜.潜的博客

 
 
 

日志

 
 

Matlab 程序性能分析  

2011-04-22 10:12:50|  分类: Matlab |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一、简单计算程序运行时间: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 real onprofile('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')。
(2)以web报告形式查看:profile viwer,profile viwer的报告易懂(点击超链接可深入报告内部),如下图所示:
  Matlab 程序性能分析 - 极夜.潜 - 极夜.潜的博客
当使用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设置回初始值,以免影响性能。

  评论这张
 
阅读(1166)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018