cputime测试代码运行时间可能不及tic/toc准确是众所周知的事情。本文并非旧话重提,而是期望起到抛砖引玉的效果,从而找到cputime与tic/toc内在的区别。望不吝赐教!

用tic/toc测试如下代码

  1. tic
  2. pause(10);
  3. t=toc

复制代码

会发现matlab处于busy状态并持续10秒,然后输出:

t =

10.0007

然而用如下cputime测试:

  1. t1=cputime;
  2. pause(10);
  3. t2=cputime;
  4. t=t2-t1

复制代码

会发现matlab也会处于busy状态并持续10秒,然后输出:

t =

0.1875

为何差别如此巨大? 于是本人阅读了help,发现了:

Using tic and toc Versus the cputime Function

Although it is possible to measure performance using the cputime function, it is recommended that you use the tic and toc functions for this purpose exclusively. It has been the general rule for CPU-intensive calculations run on Microsoft Windows machines that the elapsed time using cputime and the elapsed time using tic and toc are close in value, ignoring any first time costs. There are cases however that show a significant difference between these two methods. For example, in the case of a Pentium 4 with hyperthreading running Windows, there can be a significant difference between the values returned by cputime versus tic and toc.

原来Mathworks自己也是推荐用tic toc,而非cputime,他们也发现了超线程奔四CPU用cputime测试时间跟tic toc差距很大,根据我个人的理解,这应该跟CPU多核间运算分配(多核CPU情况)、多线程之间运算分配(超线程CPU),以及CPU内部运算优化等多种因素有关。cputime测试的并非 代码实际执行时间,而是 CPU实际运行的时间。通过CPU内部多核间任务调度、线程间调动、cpu自身优化(如被称为turbo睿频的软超频技术等)等,每个cpu实际运行时间会大大低于代码执行时间,因而也就出现了cputime测试时间大大低于tic/toc的时间。比如你的电脑是双核同时还支持超线程,那么你用cputime测试的时间最大不会超过代码运行时间的1/4,实际情况中恐怕会更小。

然而,tic/toc是直接测试 代码实际执行时间,不论cpu有多少内核、多少线程、做何种优化,tic/toc都会给出代码实际运行时间的总和,因此tic/toc可以比较准确反映代码的真实运行时间。正因为如此,Mathworkss自己也是推荐用tic toc,而非cputime。

如今是多核的时代,并且Intel绝大多数cpu同时支持超线程,稍微高端一定的cpu都支持turbo技术,那么cputime测试的时间恐怕只会更加不准,所以,还是用tic toc把

以上纯属个人观点,欢迎批评指正,以期进步!

tic/toc/cputime测试时间的区别相关推荐

  1. tic/toc/cputime测试时间

    cputime测试代码运行时间可能不及tic/toc准确是众所周知的事情.本文并非旧话重提,而是期望起到抛砖引玉的效果,从而找到cputime与tic/toc内在的区别.望不吝赐教! 用tic/toc ...

  2. python中类似matlab的tic,toc程序自我实现

    想看程序运行时间,而python中又没有类似matlab的tic,toc函数,只能自己写程序实现该功能啦~ 主要是想就是,程序开始记下当前时间,程序结束记下当前时间,作差即为程序运行时间 from d ...

  3. matlab tic toc 分段计时,Python模仿matlab的tic/toc计时

    python有自己的timeit模块,但是用惯了matlab的tic/toc,模仿了一个,需要用到globals()函数. python有自己的timeit模块,但是用惯了matlab的tic/toc ...

  4. matlab中tic,toc的用法

    TIC; operations;%操作 TOC 例子: tic; A=[1,2;3,4]; B=[5,6;7,8]; x=A/B, toc x = 3.0000 -2.0000 2.0000 -1.0 ...

  5. matlab tic和toc单位,Matlab中tic和toc用法

    简单地说,tic和toc是用来记录matlab命令执行的时间 tic用来保存当前时间,而后使用toc来记录程序完成时间. 两者往往结合使用,用法如下: tic operations toc 显示时间单 ...

  6. matlab 计算运行时间的办法

    计算运行时间的办法 Elapsed time is 0.757994 seconds. tic和toc是用来记录matlab命令执行的时间 tic用来保存当前时间,而后使用toc来记录程序完成时间. ...

  7. matlab lyapunov指数,lyapunov指数matlab

    (1)定义法 Lyapunov 指数的计算方法 定义法求解 Lyapunov 指数.JPG 关于定义法求解的程序,与 matlab 板块的"连续系统 LE 求解程序"差不多.以 R ...

  8. matlab cputime 单位,MATLAB实际单位时间计时函数

    MATLAB实际单位时间计时函数的具体应用,在编写程序时,经常需要获知代码的执行实际时间,这就需要在程序中用到计时函数,matlab中提供了以下三种方法: 1.cputime(单位不明) 返回matl ...

  9. simulink模型中的仿真时间和仿真步长的区别

    一.仿真时间 图中的stop Time处所指的就是仿真时间的设置. 但需要注意的一点就是:这里所指的时间概念与真实的时间是不一样的,只是计算机仿真中对时间的一种表示. 二.仿真步长 快捷键 ctrl+ ...

最新文章

  1. @Transactional-同一个类中方法自调,调用方法事物失效
  2. SQLite.NET提供程序的选择
  3. 手把手教学电瓶车进电梯检测、多类别车辆追踪、异常行为检测产业级应用
  4. RHEL5搭建apache服务器全过程(四)配置heartbeat和ipvsadm
  5. android studio——替换全局的某个字符串
  6. 【每日一网】Day16:Inside-Outside Net(ION)讲解
  7. 对996最客观的描述,一叶知秋
  8. perl 访问类方法的几种方式
  9. 《Linux操作系统原理》教学大纲
  10. 创建.ignore文件
  11. 39个C语言小程序(适合新手)
  12. mongodb导出csv文件到vcf
  13. 2020第十一届蓝桥杯省赛python真题详解
  14. Android Paint 详细讲解
  15. python 列表索引位置_python列表索引查找
  16. 扎根黄金赛道,尚未盈利的捍宇医疗如何遨游行业蓝海?
  17. Google Earth Engine(GEE)合成长时序的月NDVI与LST
  18. 推荐用于环境识别的机器人摄像头
  19. [原][译][osgearth]样式表style中参数总结(OE官方文档翻译)
  20. 多臂老虎机(Multi-armed bandit problem)

热门文章

  1. 计算机笔记--【并发编程①】
  2. android 模糊线条,android 线条选择器
  3. Statistics 基础之Hypothesis Tests1---t检验
  4. MCP2515 (2)
  5. 知识图谱基础入门(一)
  6. 一些调格式的经验 插入图注和尾注
  7. 【数据结构】最大曼哈顿距离
  8. python永久删除文件_Python彻底删除文件夹及其子文件方式
  9. 从微信提示用户浏览器打开
  10. Unity Hub和Unity项目的关系