jak mierzyć czas wykonywania algorytmu
Ostatnio zmodyfikowano 2011-01-28 15:37
markon Temat założony przez niniejszego użytkownika |
» 2011-01-27 21:45:37 pobieram do zmiennej czas działania aplikacji przed rozpoczęciem liczenia silni(iteracyjnie) po policzeniu silni wyświetlam obecny czas działania aplikacji - zmienna do której pobrałem czas przed rozpoczęciem działania aplikacji. clock_t start = clock(); //tu licze silnie printf( "%ld czas:", static_cast<long>(clock() - start)*CLOCKS_PER_SEC/1000);
z tym, że dla 5 silnia liczy 0 ms, nie wiem czy to możliwe, poza tym wolałbym to w sekundach, jeśli macie jakiś na to pomysł to powiedzcie |
|
DejaVu |
» 2011-01-28 00:58:51 clock pod windows ma dokładność pomiarową chyba ~1/24sek, czyli nie jesteś w stanie za pomocą wspomnianej funkcji pomierzyć czasu dokładniej. Z resztą jeżeli komputer ma 3GHz proca to znaczy że może wykonać 3mld cykli w ciągu sekundy co znaczy, że w ciągu 0,001sek jest w stanie wykonać 3 mln cykli. Oznacza to tym samym, że jeżeli mnożenie zajmuje załóżmy 5 cykli to 600 tys mnożeń komputer jest w stanie wykonać w ciągu 1ms. Co tu chcesz pomierzyć? |
|
markon Temat założony przez niniejszego użytkownika |
» 2011-01-28 14:41:22 ok, teraz dla rekurencyjnej silnia(5) liczy mi jedną milisekundę - to prawdopodobny czas, jeśli natomiast w miejsce wywołania wstawię funkcję Sleep(25) /*ta funkcja przyjmuje ilość milisekund*/ to rzeczywiście licznik wypisze 25 ms. edit: silnia(1) też wykonuje się jedną ms, możliwe to jest? |
|
DejaVu |
» 2011-01-28 15:11:22 Zadajesz takie pytania jakbyś nie rozumiał co Ci napisałem do tej pory. |
|
Elaine |
» 2011-01-28 15:37:49 clock pod windows ma dokładność pomiarową chyba ~1/24sek |
Prawie. Z bardzo skomplikowanego testu (wypisywanie wartości zwróconej przez clock) wyniknęło, że jest to 1/400 sekundy. |
|
1 « 2 » |