如何比較兩種不同方法在MatLab中同時執行的時間? 實際上我使用了「tic-toc」,但我不確定我是否以正確的方式進行了操作。 這是我該怎麼做的:Mfile執行時間
clc;
clear all;
A=rand(10);
B=rand(50;
tID1=tic;
y1=function1(A,B);
t1=toc(tID1);
tID2=tic;
y2=function2(A,B);
t2=toc(tID2);
如何比較兩種不同方法在MatLab中同時執行的時間? 實際上我使用了「tic-toc」,但我不確定我是否以正確的方式進行了操作。 這是我該怎麼做的:Mfile執行時間
clc;
clear all;
A=rand(10);
B=rand(50;
tID1=tic;
y1=function1(A,B);
t1=toc(tID1);
tID2=tic;
y2=function2(A,B);
t2=toc(tID2);
是的。那是對的。你甚至不需要定義你使用它的方式tID1
和tID2
。所以,你也可以這樣做:
clc;
clear all;
A=rand(10);
B=rand(50;
tic;
y1=function1(A,B);
t1=toc;
tic;
y2=function2(A,B);
t2=toc;
謝謝@Nitish :)。 – ilegna
使用MATLAB內置的profiler更好地理解你的代碼的運行時的瓶頸。
profile clear; %// reset profiler's history
profile on; % start recording
y1 = function1(A, B); % your code here...
y2 = function2(A, B);
profile off; % stop recording
profile viewer; % visualize the results.
Enjoy!
謝謝@Shai。我愛它。 O_o – ilegna
但是@Shai,這個代碼在這裏有問題。我的第一個和第二個功能彼此如此相似,但在這個部分,它表示需要更多時間執行的線條,它講述了不同的線條;例如,我的s = 1,2,...,8都表示「s = 5;」在「fun1」中耗費了大量的時間。爲了說清楚,爲什麼只是fun1?我們也有fun2這個代碼;爲什麼只有s = 5?我們有s = 1; ... s = 8;對於我來說,簡單的初始化在執行時間中起着關鍵作用也是不可接受的。對不起,如果我不解釋好;我幾乎不會說英語...... O_o – ilegna
@ilegna很難從您的評論中瞭解問題。如果代碼不太長,您可以在屏幕截圖中捕獲'profile'的結果,並將此評論作爲新問題發佈。 – Shai
看起來不錯。另請參見['timeit'](http://www.mathworks.com/matlabcentral/fileexchange/18798-timeit-benchmarking-function) –
正如@LuisMendo所建議的那樣,您應該仔細研究'timeit'。計時MATLAB代碼中有很多細節,'tic'和'toc'不涉及。 'timeit'正確處理事情。在最近的版本中,'timeit'內置於MATLAB,否則按照Luis的鏈接下載。 –