2011-02-02 11 views
20

Mam program uruchamiający pętlę Chcę mieć dwa liczniki czasu, jeden dla pętli, który powie mi, jak log zrobił jedną iterację pętli, a drugą dla całego programu. Zgodnie z moją najlepszą wiedzą, tic i toc będzie działać tylko raz.Kilka liczników czasu w MATLAB

Odpowiedz

29

Znasz tylko z tego tic toc składnię:

tic; someCode; elapsed = toc; 

Ale jest też inna składnia:

start = tic; someCode; elapsed = toc(start); 

Druga składnia sprawia, że ​​sama pomiar czasu, ale umożliwia jednoczesne uruchomienie więcej niż jednego stopera. Możesz przypisać wyjście tic do zmiennej tStart, a następnie użyć tej samej zmiennej podczas wywoływania toc. MATLAB mierzy czas, jaki upłynął między poleceniem tic a powiązanym z nim toc i wyświetla czas, który upłynął w sekundach. Ta składnia umożliwia czas wielu jednoczesnych operacji, w tym synchronizacji operacji zagnieżdżonych (matlab documentation of tic toc).

Oto jak z niego korzystać w twoim przypadku. Powiedzmy, że jest to kod:

for i = 1:M 
    someCode; 
end 

Włóż tic i toc tak:

startLoop = tic; 
for i = 1:N 
    startIteration = tic; 
    someCode; 
    endIteration = toc(startIteration); 
end 
endLoop = toc(startLoop); 

Można również użyć powyższej składni do tworzenia wektorowych dla których element ego jest pomiar czasu dla i-tej iteracji. W ten sposób:

startLoop = tic; 
for i = 1:N 
    startIteration(i) = tic; 
    someCode; 
    endIteration(i) = toc(startIteration(i)); 
end 
endLoop = toc(startLoop); 
2

Można użyć tic toc i operacji czasowych zagnieżdżone, z pomocą Matlab dla tic:

tStart=tic; any_statements; toc(tStart); sprawia, że ​​ten sam pomiar czasu, ale pozwala Ci możliwość uruchomienia więcej niż jeden stoper równocześnie. Możesz przypisać wyjście tic do zmiennej tStart, a następnie użyć tej samej zmiennej podczas wywoływania toc. MATLAB mierzy czas, jaki upłynął między poleceniem tic a powiązanym z nim toc i wyświetla czas, który upłynął w sekundach. Taka składnia pozwala czasie wielu operacji równoległych, w tym harmonogramu zagnieżdżonych operacji

1

nie jestem w stanie spróbować tego teraz, ale powinieneś być w stanie korzystać z wielu tic i toc sprawozdań jeśli przechowywania wartości tic do zmienne.

Przeczytaj Matlab's documentation na tej stronie jest nawet sekcja na temat ich zagnieżdżania. Tutaj jest szorstka przykład:

tStartOverall = tic; 

... 

tStartLoop = tic; 
<your loop code here> 
tEndLoop = toc(tStartLoop); 

... 

tEndOverall = toc(tStartOverall); 
Powiązane problemy