Discussion:
C/C++ pomiar czasu w mikro lub milisekundach
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Viqq
2006-10-10 12:29:41 UTC
Permalink
Witam

Czy istnieją jakieś funkcje standardowe w C lub C++ do pomiaru czasu w
mikro lub milisekundach?

Potrzebuję zrobić coś takiego: pomiar pierwszy, jakaś czynność, pomiar
drugi, czas trwania czynności = różnica pomiarów.

Ważne jest żeby pomiar czasu w (mikro|mili)sekundach był niezależny od
platformy i nie wymagał nic poza standardem języka.

Nie interesuje mnie co te (mikro|mili)sekundy będą oznaczać (np. czas od
uruchomienia systemu, czy też od roku 1970 - nieistotne), ważne jest
żebym mógł obliczyć (nawet z niewielkim błędem) czas trwania czynności
(sekundy to dla mnie za długo).

proszę o odpowiedź i pozdrawiam
Jedrzej Dudkiewicz
2006-10-10 12:43:08 UTC
Permalink
Post by Viqq
Czy istnieją jakieś funkcje standardowe w C lub C++ do pomiaru czasu w
mikro lub milisekundach?
Na unixach masz clock() z <time.h>, nie wiem jak jest na Windows.

JD
Viqq
2006-10-10 13:38:59 UTC
Permalink
Post by Jedrzej Dudkiewicz
Post by Viqq
Czy istnieją jakieś funkcje standardowe w C lub C++ do pomiaru czasu w
mikro lub milisekundach?
Na unixach masz clock() z <time.h>, nie wiem jak jest na Windows.
a czy clock() zadziała pod MinGW i Cygwinem?
Marcin 'Qrczak' Kowalczyk
2006-10-10 14:02:15 UTC
Permalink
Post by Viqq
Czy istnieją jakieś funkcje standardowe w C lub C++ do pomiaru czasu
w mikro lub milisekundach?
clock() - mierzy czas procesora; standardowa; dokładność zależy od
systemu, np. u mnie pod Linuxem 10ms (uwaga: CLOCKS_PER_SEC wyznacza
tylko skalę, a nie dokładność).

gettimeofday() - mierzy czas bezwzględny; Unix; dokładność u mnie
1us (samo wywołanie trwa 2us).

clock_gettime() - obejmuje m.in. funkcjonalność obu powyższych
w jednolitym interfejsie; Unix; dokładność u mnie jak wyżej (mimo że
interfejs używa nanosekund).
--
__("< Marcin Kowalczyk
\__/ ***@knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/
Viqq
2006-10-10 14:21:08 UTC
Permalink
Post by Marcin 'Qrczak' Kowalczyk
Post by Viqq
Czy istnieją jakieś funkcje standardowe w C lub C++ do pomiaru czasu
w mikro lub milisekundach?
clock() - mierzy czas procesora; standardowa; dokładność zależy od
systemu, np. u mnie pod Linuxem 10ms (uwaga: CLOCKS_PER_SEC wyznacza
tylko skalę, a nie dokładność).
gettimeofday() - mierzy czas bezwzględny; Unix; dokładność u mnie
1us (samo wywołanie trwa 2us).
clock_gettime() - obejmuje m.in. funkcjonalność obu powyższych
w jednolitym interfejsie; Unix; dokładność u mnie jak wyżej (mimo że
interfejs używa nanosekund).
Dzięki serdeczne za odpowiedzi (również Jędrzejowi post obok).

Użyję więc clock() (około 10ms jest dla mnie do przyjęcia), żeby program
mógł być skompilowany na każdym systemie. Ale pozostałe funkcje też
sobie zapamiętam.


Pozdrawiam

Loading...