在matlab中,为了验证比较两个算法直接的效率,需要计算某段程序的运行时间,常用的三种方法
1、tic和toc命令对;此方法最接近算法的实际运行时间。
tic;
a=0;
for i=1:100000
for j=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
ps:
delete(findall(0,'type','figure'))%在matlab命令窗口输入,可直接关闭所有figure