2012-06-18 15 views
10

Szukałem, ale nie mogę znaleźć odpowiednika funkcji tic/toc matlab, aby po prostu wyświetlić na konsoli, jak długo zajęło program do jego przetwarzania. (Idealnie chciałbym umieścić tik (start timera) i TOC (koniec stoper) w dowolnym miejscu w programie.Matlab tic równoważne w C++

Wszelkie sugestie?

+1

To nie ma nic wspólnego z kompilacji. – Dennis

Odpowiedz

17

Znalazłem to, czego szukałem. obejmują:

#include <ctime> 

potem na początku:

time_t tstart, tend; 
tstart = time(0); 

I wreszcie przed końcem:

tend = time(0); 
cout << "It took "<< difftime(tend, tstart) <<" second(s)."<< endl; 
+0

Precyzja czasu() to sekundy, natomiast tic i toc w MATLAB oferują milisekundy lub więcej. – NoahR

+1

@NoahR 'difftime()' zwraca 'podwójne', dając lepszą dokładność niż 1 s. Rzeczywista precyzja zależy od systemu, ponieważ prawdopodobnie jest również w programie MATLAB. – glglgl

+0

W C użyj '#include '. Ale pamiętaj, że przynajmniej w Windowsie, dla mnie nadal zwraca pełne sekundy, nawet jeśli typ powrotu jest podwójny. Część milisekund jest zerami. –

3

Jeśli jesteś na Linuksie można skorzystać z funkcji

clock_gettime(); 

jeśli na okna spróbować

QueryPerformanceCounter() 

Możesz google dla tych konkretnych szczegółów implementacji. Inne systemy operacyjne nie wiem o. Istnieje niewątpliwie wiele innych sposobów, aby osiągnąć to samo, ale jeśli nie otrzymasz innych odpowiedzi, jest to rozsądne miejsce na rozpoczęcie.