TDateTime ... czas skokowy ? [Delphi]


(Venice3000) #1

Witam!

Pod windą XP napisałem w Delphi program porównujący czasy algorytmów sortowania .. jednak trochę dziwią mnie ich początkowe wartości.

Otóż w miarę wzrostu wartości (mówimy o małych ilościach - do 60 tys. ; oraz sortowaniach przez kopcowanie, scalanie, shella) powin\ien czas wzrastac od 0ms stopniowo ... jednak czas wzrasta skokowo (co 15 lub 16ms) .. czy to jest uwarunkowane od komputera, procesora, itp ?

Nigdy i nigdzie nie spotkałem (w żadnych programach u mnie w Delphi) czasu 0

Jakies wyjasnienie ekspertów ??

Pozdrawiam!


(Fiołek) #2

Możliwe, że to czego używasz ma za małą rozdzielczość zegara i dlatego zwraca te 15-16ms, a nie 1ms :wink:

EDIT: małe niedopatrzenie.


([alex]) #3

TDateTime w Delphi jest synonimem Double. Data jest kodowana w sposób następujący jeden dzień to jedynka; godziny, minuty, sekundy i milisekundy kodowane jako ułamek tej liczby. Więc niema co się dziwić że skok jest co 15 ms. Dla pobrana czasu z dokładnością do ms radze korzystać z funkcji API, jest tam nawet taka która zwraca czas aplikacji, czyli ile czasu proces tak naprawę pracował.


(Fiołek) #4

W Windows największą rozdzielczość ma QueryPerformanceCounter, a w Unixach AFAIK gettimeofday.


(Venice3000) #5

Fiołek dzięki - kojarzyłem istnienie takiej funkcji, ale nie wiedziałem pod jaką nazwą szukać.

Pozdro!