matlab計時函數

計時單位:不明,和CPU頻率有關?
返回Matlab啓動以來的CPU時間,可以在程序執行錢保存當時的CPU時間,然後在程序執行結束後用cputime減去運行前保存的數值,就可以獲取程序的實際運行時間

>>t0=cputime;pause(3);TimeCost=cputime-t0

1.2 tic/toc

計時單位:s
tic用在程序的開始,作用是啓動一個計時器,然後在程序尾部放一個toc,表示終止計時器,並返回tic啓動以來的總時s間

1.3 etime

計時單位:s
etime(t1,t2)用來計算兩個日期向量t1和t2之間的時間差,結合前面講到的clock函數也可以用來確定程序代碼的運行時間

>>t0=clock;pause(3);TimeCost=etime(clock,t0)


在三種計時中建議使用第二種,相對來說最精確。當然你可以使用profiler來確定你的執行時間,並且具體到沒有個命令的時間。
經常我們需要計算我們程序到底運行多長時間,這樣可以比較程序的執行效率。當然這個對於只有幾秒鐘的小程序沒有什麼意義,但是對於大程序就有很重要的意義了。

2具體計時方法
2.1 tic和toc組合

計算tic和toc之間那段程序之間的運行時間,它的經典格式爲

tic
%想要計時的程序
toc

也可以

tstart=tic;
%想要計時的程序
tend=toc(tstart);


複製代碼
換句話說程序,程序遇到tic時Matlab自動開始計時,運行到toc時自動計算此時與最近一次tic之間的時間。這個有點拗口,下面我們舉個例子說明

1. % by dynamic of Matlab技術論壇
2. % see also http://www.matlabsky.com
3. % contact me [email protected]
4. % 2009-08-18 12:08:47
5. clc
6. tic;%tic1
7. t1=clock;
8. for i=1:3
9. tic ;%tic2
10. t2=clock;
11. pause(3*rand)
12. %計算到上一次遇到tic的時間,換句話說就是每次循環的時間
13. disp(['toc計算第',num2str(i),'次循環運行時間:',num2str(toc)]);
14. %計算每次循環的時間
15. disp(['etime計算第',num2str(i),'次循環運行時 間:',num2str(etime(clock,t2))]);
16. %計算程序總共的運行時間
17. disp(['etime計算程序從開始到現在運行的時間:',num2str(etime(clock,t1))]);
18. disp('======================================')
19. end
20. %計算此時到tic2的時間,由於最後一次遇到tic是在for循環的i=3時,所以計算的是最後一次循環的時間
21. disp(['toc計算最後一次循環運行時間',num2str(toc)])
22. disp(['etime程序總運行時間:',num2str(etime(clock,t1))]);

複製代碼
運行結果如下,大家可以自己分析下

1. toc計算第1次循環運行時間:2.5628
2. etime計算第1次循環運行時間:2.562
3. etime計算程序從開始到現在運行的時間:2.562
4. ======================================
5. toc計算第2次循環運行時間:2.8108
6. etime計算第2次循環運行時間:2.813
7. etime計算程序從開始到現在運行的時間:5.375
8. ======================================
9. toc計算第3次循環運行時間:2.0462
10. etime計算第3次循環運行時間:2.046
11. etime計算程序從開始到現在運行的時間:7.421
12. ======================================
13. toc計算最後一次循環運行時間2.0479
14. etime程序總運行時間:7.421


2.2 etime(t1,t2)並和clock配合

來計算t1,t2之間的時間差,它是通過調用windows系統的時鐘進行時間差計算得到運行時間的,應用的形式

t1=clock;
%想要計時的程序
t2=clock;
etime(t2,t1)


複製代碼
至於例子我就不舉了,因爲在上面的例子中使用了etime函數了

2.3 cputime函數來完成

使用方法和etime相似,只是這個是使用cpu的主頻計算的,和前面原理不同,使用格式如下

t0=cputime
%想要計時的程序
t1=cputime-t0

複製代碼
上面說到了三種方法,都是可以進行程序運行時間計算的,但是Matlab官方推薦使用tic/toc組合
When timing the duration of an event, use the tic and toc functions instead of clock or etime.

至於大家可以根據自己的喜好自己選擇,但是使用tic/toc的時候一定要注意,toc計算的是與最後一次 運行的tic之間的時間,不是第一個tic,更不是第二個。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章