Witam,
Jeśli potrzeba dokładniejszej rozdzielczości to pozostaje jedynie wykorzystanie windowsowych API: QueryPerformanceFrequency() i QueryPerformanceCounter(). Poniżej kod asemblera - akurat wczoraj pisałem kod dla klienta w asm więc wklejam:
;; -------------------------------------------------- ;; Rozpoczecie pomiaru czasu trwania algorytmu sortujacego
lea ebx, liFrequency
INVOKE QueryPerformanceFrequency, ebx ;; Funkcja zwracająca częstotliwość zegara wysokiej rozdzielczości.
lea esi, liPerformanceCountA
INVOKE QueryPerformanceCounter, esi ;; Funkcja zwracająca aktualną wartość licznika wysokiej rozdzielczości.
;; jakies operacje...
;; --------------------------------------------------- ;; Pomiar czasu trwania algorytmu sortujacego (z wykorzystaniem FPU)
lea edi, liPerformanceCountB
INVOKE QueryPerformanceCounter, edi
finit
push 1000000 ;; Pomiar w mikrosekundach (10^-6)
fild DWORD PTR [esp]
fild (LARGE_INTEGER PTR [ebx]).QuadPart
fild (LARGE_INTEGER PTR [esi]).QuadPart
fild (LARGE_INTEGER PTR [edi]).QuadPart
fsub st(0), st(1)
fdiv st(0), st(2)
fmul st(0), st(3)
fistp DWORD PTR [esp]
pop [dwTimeA]
Niestety, tylko taki kod mogę wstawić na chwilę obecną. Może pomoże.