matlab取包络函数_MATLAB 计时 tic toc / timeit / cputime / profile 比较

相关的时间概念

  • 挂钟时间(wall-clock time)
    又称流逝时间(elapsed time)或响应时间(response time)
    除了计算时间外,包括各种额外的时间(比如代码中有 pause 函数部分,则实际暂停时间也会计入挂钟时间)
  • 计算时间(CPU time)
    程序实际占用计算资源的时间

tic / toc

tic 和 toc 是比较直接的记录挂钟时间的方法。

自 R2008b 起支持嵌套使用,但在其附近的版本中嵌套使用,可能造成额外的开销以致测出不准的数据。[1][2]2011年前后,团队更改了这组函数的底层实现,可以提供微秒精度的数据。[2]2020年的文档中未见嵌套造成额外开销的说明,可能已经解决了相应问题。

如果代码单次运行时间<0.1秒,则建议测量多次运行的时间后,取中位数/平均值。[3]

timeit

timeit 对函数测量挂钟时间,对传入的函数句柄进行多次运行,取运行时间的中位数。

不应在被测函数中调用 tic / toc / timeit,也不应在 tic 与 toc 之间使用 timeit。[4]

cputime

cputime 测量计算时间。

profile

profile 是编辑器界面的 Run and Time(运行并计时)的对应函数,可在四种 timer 中进行切换。[5]

  1. performance
    默认 timer,挂钟时间,由操作系统提供,类似 tic/toc
  2. processor
    挂钟时间,由 CPU 提供,可能因节能设置等原因而不准确
  3. real
    挂钟时间,由操作系统提供,开销最大,且系统时间修改时会被影响
  4. cpu
    计算时间,会汇总所有线程上进程占用的时间

参考

  1. ^Nested Timing https://blogs.mathworks.com/loren/2009/01/06/nested-timing/
  2. ^abImprovements to tic and toc Functions for Measuring Absolute Elapsed Time Performance in MATLAB https://www.mathworks.com/company/newsletters/articles/improvements-to-tic-and-toc-functions-for-measuring-absolute-elapsed-time-performance-in-matlab.html
  3. ^Measure the Performance of Your Code https://www.mathworks.com/help/matlab/matlab_prog/measure-performance-of-your-program.html
  4. ^timeit https://www.mathworks.com/help/matlab/ref/timeit.html
  5. ^profile https://www.mathworks.com/help/matlab/ref/profile.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值