Pomiar czasu wykonania funkcji w milisekundach

0
tStart = clock();
    for(unsigned int i = time = 0; i < ile ; ++i)
    {
       ;//cos tam.........
    }
    time = ((clock() - tStart));
    printf("Testowano %d razy \n\n", ile);
    printf("\t - Calkowity czas pomiaru: %.15fms\n\n", (double)time/1000l);
    printf("\t - Sredni czas pomiaru: %.15fms\n\n", (double)(time/1000l)/ile);
 

Czy ten kod poprawnie obliczy czas wykonania w milisekundach ? Czy to przeliczenie jest poprawne?

0

W milisekundach w C/C++ (przed C++11) tylko clock() i niezbyt dokładnie lub biblioteki zewnętrzne lub API systemowe.
Od C++11 masz cały chrono: http://en.cppreference.com/w/cpp/chrono

0

Ok, ale mam stary kompilator wiec o chrono moge posnic.
Chodzi mi o to czy moge ufac temu kodowi biorac pod uwage jego srednia dokladnosc i czy przeliczenie jednostek jes tpoprawne ?

0

1000./CLOCKS_PER_SEC*time - to będzie czas w milisekundach.

0

Mozesz wyjasnic jak to dziala u Ciebie?
Moją wersje rozumiem i wydaje mi sie, że jest logiczna ale pewien nie jestem....

    printf("\tSredni czas wykonywania: %.15fms ms\n\n",(double)(((1000*time))/CLOCKS_PER_SEC)/ile); 

mnoze time przez 1000 (bo sekunda ma 1000 milisekund) a potem dziele to przez wartosc tego makra co zamienia na sekundy i wszystko usredniam przez ilosc pomiarow

A to Twoje ?

0

Pewnie u ciebie to czas płynie zupełnie inaczej.
Jak masz 3 godziny to dla wyliczenia minut dzielisz przez 60.
Więc u ciebie wychodzi 3 h / 60 = 0.05 min
Dla mnie czas płynie całkiem inaczej ja 3h mnożę przez 60 i wychodzi mi 180 min.

0
 printf("\tCzas wykonywania: %.15fms \n\n",(double)((time/CLOCKS_PER_SEC)*1000));

Czyli to jest wlasciwe ^^

najpierw uzyskuje sekundy a potem mnoze przez 1000

0

Nie, to jest niewłaściwe.
Właściwe już ci podałem.
http://ideone.com/nWWSjx

0

Dzięki wielki ;)

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