程序运行时间计算方法

  • 格式:pdf
  • 大小:122.32 KB
  • 文档页数:3

下载文档原格式

  / 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
matlab程序运行时间计算方法 在matlab中,为了验证比较两个算法直接的效Hale Waihona Puke Baidu,我们常常需要计 算某段程序的运行时间,而常用的也就是三种方法: 1、tic和toc命令对;格式如下面一段程序。 tic; a=0; for i1=1:100000 for j1=1:10000 a=a+1; end end toc; tic命令表示开启一个matlab的计时器,toc则表示停止之前与之对应 的tic开启的计时器,并得到最后的计时结果,上一段程序结果如下: Elapsed time is 3.720372 seconds. 2、clock加etime函数;程序结构如下面一段。 t1=clock; b=0; for i2=1:100000 for j2=1:10000 b=b+1; end end t2=clock; etime(t2,t1) 其中,clock命令是获取系统的时间矢量,而etime函数则是计算两 个时间矢量之间的差并以秒单位形式表示。clock作为时间矢量包含了年 月日时分秒六个参数,如在matlab单独执行这一命令可得到: >> clock ans = 1.0e+003 * 2.0120 0.0080 0.0180 0.0140 0.0180 0.0507 3、cputime命令计算运行时间;
m1=cputime; c=0; for i3=1:100000 for j3=1:10000 c=c+1; end end m2=cputime; m=m2-m1 cputime命令是获取matlab自启动后所占用cpu的运行时间,这里需 要详细介绍下,cputime不是代表matlab的运行时间,而是指matlab占用 cpu的时间。大家知道,window系统的多进程管理类似于我们所说的时 分复用概念,即cpu完成多进程是通过时间划分来实现的,这一时刻运 行的是进程一,下一时刻运行的是进程二,由于速度非常快,所以对于 用户来说看起来就是同时运行的。我们可以做个试验,在一打开matlab 的时候,执行cputime命令得到: >> cputime ans = 13.1197 说明我们matlab打开用了13秒多的时间,大家可以自我感觉下是不 是这个时间。 既然大概的原理我们知道了就可以来比较比较这三者的区别。首 先,tic和toc的方法是最优的,这也是matlab帮助中提倡的一种。从精度 上来说,第一种方法精度最高,由于是matlab自身的计时器,精度上要 比后两者高,其次是cputime,最低的是clock只有毫秒级的精度。再 者,从最接近实际电路运行时间上来说,也是第一种方法最为接近,这 点我们仔细分析下。 我们知道,想得到某段程序在matlab中运行的时间,目的是在于对 该程序所实现的算法在实际电路中处理的时间有个大概的估计与比较, 所以我们最想要的是它在cpu运行的时间。这一点第二种方法则不太适 合了,因为它采用的是系统时间作为计算参数,在这个时间内肯定还有 着别的后台运行程序等。而对于第三种方法,cputime所对应的测量对 象是matlab整个程序,而并不是对于我们所测量的这段程序而言
(matlab也可以看做是一个编译器,对我们编写的m代码进行编译,所 以它还需要进行着别的操作)。再看看我们的第一种matlab推荐的方 法,tic是启动一个matlab内部的计时器,所以说它也是一种基于cpu时间 的计时,而且更重要的是,计时开始的时间是我们设定在代码前的,可 以说tic和toc中间对于matlab来说,大部分时间就是运行这段代码,所以 时间上是最接近实际在电路中运行的时间的。 关于上面的比较,个人闲来无事做了个实验:同样的代码,将 matlab在任务管理器中的进程优先级进行改动,我们可以明显看到运行 时间上的变化。