MATLAB 的 tic 和 toc 指令,是最簡單的程式計時方法,只要將整段程式碼置於這兩個指令之中,MATLAB 就會自動計算程式執行所花費的時間。例如:對於一個維度 1000×1000 的亂數矩陣,欲求得其反矩陣的計算時間,可輸入如下:
由上述範例,可以得知MATLAB 花費在執行 inv(rand(1000)) 計算的時間。
若要使用多個馬錶來計時,則只需要將 tic 指定到一個變數即可,對應的 toc 指令也必須用到此變數,才能記錄此馬錶所花的時間。在下列範例中,我們計算 inv 指令對不同維度的矩陣所花的時間,其中用了兩個馬錶,分別計算總時間以及每個矩陣所花的時間:
若要取得絕對時間,可以使用 clock 指令來傳回現在的時間所形成的向量,包含 6 個元素,分別是年、月、日、時、分、秒,例如我們可以直接在 MATLAB 視窗輸入如下:
>> round(clock) ans = 2012 2 6 10 58 12 在上例中,傳回的整數向量,代表現在時間是 2012 年 2 月 6 日 10 時 58 分 12 秒,round 指令的作用是將所有傳回數值,加以四捨五入成整數,便於閱讀。
使用 etime 指令則可以傳回兩個時間的差值,並以秒數表示。因此將 clock 和 etime 指令合併使用,就可以計算一段程式碼的執行時間。以前面的例子而言,可改用 clock 和 etime 指令來得到類似的結果:
另一個相關的指令是 cputime,可傳回 MATLAB 從啟動後所占用的 CPU 時間。但由於 MATLAB 官方文件表示,cputime 會受到 Windows 實作的影響(Pentium 4 with hyperthreading running Windows)而不準確,因此我們目前所學的馬錶計時應該以 tic、toc、clock、etime 這四個指令為主。
MATLAB程式設計:進階篇