Mierzenie czasu dzialania

0

Witam,
czy jest jakiś sposób na dokładniejsze zmierzenie czasu działania kawałka kodu(algorytmu), który będzie precyzyjniejszy niż clock() z time??

0

A co Ty tam widzisz nieprecyzyjnego?

0

clock() i getTickCount()
mają dokładność rzędu 5-15 milisekund

QueryPerformanceCounter()
ma dokładność około 0.8 milisekundy


Opolski Portal Programistyczny
http://programowanie.opole.pl

0

no dokładność do milisekundy mnie nie urządza. mamy policzyć czasy działania dodawania/usuwania/przeszukiwania różnych struktur od ilości elementów. Niektóre struktury dla niektórych n (ilość elementów) daje wyniki mniejsze niż milisekunda.

0

Raczej większej rozdzielczości nie dostaniesz. Zwiększ ilość elementów po prostu. Zresztą mozesz policzyć jaką złożoność ma dana operacja i sobie na tej podstawie policzyc ile mniej więcej to potrwa.

0

Daj taką operacje w pętli milion razy zmierz czas z dokładnością do sekundy podziel czas przez ten milion a dostaniesz czas operacji z dokładnością do milisekundy.
Można jeszcze policzyć czas działania pustej pętli milion razy i przed dzieleniem odjąć tą wartość.

0

tylko, ze gdybym chcial liczyc czas milion razy np dla dodawania to musialbym tez usuwam element dodany, aby nie zwiekszac wielkosci struktury ale wtedy trace tez czas na usuniecie elementu

0

Nie no zależy. Milion to nie jest aż tak dużo... Np. 1 000 000 x 10 bajtów to tylko niecałe 10MB... A co do czasu to dla vectora, czy listy dodawanie do końca listy jest constant time...

A przy dodawaniu milion bez problemu mieści się w longu...


Opolski Portal Programistyczny
http://programowanie.opole.pl

0
protechnologia.pl napisał(a)

clock() i getTickCount()
mają dokładność rzędu 5-15 milisekund

bzdura. rozdzielczość to 65536 tyknięć na godzinę, czyli około 55ms (18.(2)Hz).

protechnologia.pl napisał(a)

QueryPerformanceCounter()
ma dokładność około 0.8 milisekundy

jeszcze większa bzdura. rozdzielczość to typowo 100ns, zwykle wystarcza do zmierzenia czasu wykonania nawet jednej iteracji algorytmu. inną sprawą jest to, że czas jednej iteracji a średni czas jednej iteracji mogą od siebie mocno odbiegać, a samo QPC też jest problematyczne.

0

Sam nie sprawdzałem, tylko napisałem to, co dowiedziałem się ze źródeł. Ty osobiście sprawdzałeś?

Opolski Portal Programistyczny
http://programowanie.opole.pl

0

Czesc,
poza wymienianymi funkcjami mozesz tez uzyc tez gotowego programu do profilowania, np gprof dla linuxa. Ostatnio pisalem jak go uzywac na moim blogu : http://www.mateuszmidor.com/2011/03/profilowanie-pod-linuxem-wstep/.
Pozdrawiam!

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