Czas działania programu

0

To znów ja :P Tym razem mam problem : jak zmierzyć czas działania algorytmu? Mam pewną funkcję, która wysyła wiadomości co jakiś czas, funkcja kończy się, gdy wiadomośćdotrze do właściwego odbiorcy. Aby tak jakoś ładniej wyświetlały się komunikaty w konsoli, dałem sleep na 2 sekundy między wyświetlaniem komunikatów. Teraz swoją funkcję mogę wywołać tylko raz w mainie, i muszę obliczyć czas, ile ona się wykonuje. Próbowałem coś takiego:

clock_t start = clock();
moja_funkcja();
long duration = ((1000*(clock()-start))/CLOCKS_PER_SEC);
cout << duration;

Ale to nie działa poprawnie, ponieważ kiedy funkcja wykonuje się długi czas, to mi wyświetla, że wykonywała się 90 milisekund, a to nie możliwe, ponieważ trwało to znacznie dłużej. Jak więc obliczyć prawdziwy czas jej wykonania?

0

Oczywiście zapomniałem dodać, że testuję to na Win oraz Ubuntu ... gdzie na Win przy użyciu :

#if defined(__WIN32__) || defined(__win32__) || defined(__WIN64__) || defined(__win64__)
_sleep(2000);

i tego mierzenia czasu wyżej dostaję czas przykładowo 92656 milisekund (funkcja wykonuje się dość długo)

a dla Ubuntu przy:

#if defined(__LINUX__) || defined(__linux__)
sleep(2);

funkcja wykonuje się 50 milisekund (a "na oko" trwa tyle samo, ile na Windowsie :/)

0

A spróbuj tak
long duration = ((clock()-start)/CLOCKS_PER_SEC);

0

No jak dałem tak dla Windowsa, to wychodzi na to, że jest ok (jeszcze później dokładnie zmierzę stoperem, jak program będzie działał :P) Natomiast dla Ubuntu pokazuje mi 0 milisekund, czyli coś jest nie tak :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1