Witam
Chcę zbadać czas wykonywania się pewnych operacji i używam do tego funkcji time(). Jednak zwraca ona sekundy a ja chciałbym uzyskać wynik w milisekundach. Da się to zrobić?
Witam
Chcę zbadać czas wykonywania się pewnych operacji i używam do tego funkcji time(). Jednak zwraca ona sekundy a ja chciałbym uzyskać wynik w milisekundach. Da się to zrobić?
Da się. Użyj clock()
: http://www.cplusplus.com/reference/clibrary/ctime/clock/
Otrzymasz ilość taktów zegara jaka upłynęła od uruchomienia programu. To co to w zasadzie oznacza jest zależne od implementacji, ale jest makro CLOCKS_PER_SEC
, które pozwala przeliczyć tę wartość na sekundy. (Trzeba dzielić) Tak otrzymany wynik możesz przeliczyć na dowolną wielokrotność sekundy.
OK, dzięki. Jednak mały kłopot używam kody do zliczania czasu
clock_t st,kon;
st=clock();
//mój algorytm
kon=clock();
long czas=(long)(kon-st);
zawsze zwraca mi zero. Gdy wypisałem sobie wartości zmiennej st i kon to zawsze mają wartość 10000
Widocznie twój algorytm wykonuje się w zbyt krótkim czasie. Odpal go między wywołaniami clock np. 10000 razy i wynik podziel przez ilość odpaleń.
Zgadza się, algorytm dla małych danych wykazuje czas 0 a po ich zwiększeniu jest ok. Dzięki za pomoc
Możesz też skorzystać z boosta: http://www.boost.org/doc/libs/1_49_0/doc/html/date_time/local_time.html#date_time.local_time.local_time_period