Czas wykonania pętli (sortowanie)

0

Witam,
muszę zmierzyć czas wykonania pętli (która sortuje tablicę liczb), jednak pętla chyba wykonuje się tak szybko, że wynik jaki otrzymuję to zawsze 0

#include<stdio.h>
#include<time.h>

double obliczCzas( clock_t mojCzas )
{
    return static_cast < double >( mojCzas ) / CLOCKS_PER_SEC;
}

int main()
{
	double czas = clock();
	metodaSortująca();
	printf("Zmierzony czas : %.4f \n", obliczCzas(clock() - czas) );
	getchar();
	return 0;
}

wynik to zawsze:
Zmierzony czas 0.0000

Jak mogę obliczyć realny czas wykonania metodySortującej?

0

Wykonaj ją w pętli wiele (np. 1000, 10000) razy i uśredni wynik.

0

Może to głupie pytanie ale co masz na myśli mówiąc "uśrednij"?
Jeśli podzielę przez ilość wykonań pętli wyjdzie na to samo.

Chyba ze chodzi ci o coś takiego?:

 
double time3;
for(int i =0; i < 1000; i++)
{
     time1= clock();
     metodaSortująca();
     time2 = clock() - time1;
     time3 += time2;
}

wynik to: time3/1000 ?

0

No może źle się wyraziłem. Zmierz czas wykonania pętli, która wykonuje wiele (np. 1000) razy analizowaną operację. Następnie podziel uzyskany czas przez liczbę iteracji i otrzymasz średni czas wykonania jednej iteracji. Poza tym od razu przedstaw sobie ten czas w milisekundach albo nawet nanosekundach. W sumie wynik powinieneś jakiś mieć i bez tej pętli, ale będzie raczej mało miarodajny. Ogólne taki jest jest i tak mało miarodajny. ale z pętlą bardziej.

0

hmmm ok, dzięki. Wynik mogę zobaczyć dopiero gdy dam 5000 wykonań i 7 miejsc po przecinku...
i otrzymuję różne wyniki (odpalałem program 5 razy i 3 razy otrzymałem czas 0.0000012
a 2 razy 0.0000006.

Czy to mozliwe ze czasy sa rozne?

0

Zwiększ liczbę iteracji do miliona i zobacz co się stanie, wyniki powinny być bardziej zbliżone do siebie. Żeby dokładnie zmierzyć takie czasy lepiej jednak posłuż się profilerem.

0

Dzięki za pomoc.
Możesz polecić coś czego mogę użyć z językiem C na Linuxie?

0

Valgrind. A dokładniej jedno z narzędzi - callgrind. Do wizualizacji wyniku kcachegrind chyba jest najlepszy.

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