Co do funkcji ?QueryPerformanceCounter()?.
Ile wykonanego kodu pociągnie za sobą wołanie WinAPI? Ile wg polecanej funkcji trwa samo jej wykonanie?
Tak naprawdę to jest jedna, słownie jedna instrukcja Assemblera (Jeżeli mamy Pentium)
W rejestrax EDX:EAX umieszcza 64bitową wartość licznika, zerowanego przez RESET, a inkrementowanego z każdym taktem zegara (zew). Czyli nie pokazuje ona czasu w sekundach.
Np. na moim chudzieńkim łaptopie, licznik ten w ciągu sekundy przyrasta o około 100?000?000, czyli co około 10 nS.
Przykład dla FreePascala,
Typowi "qword" odpowiada w C "long long unsigned int" albo "_LARGE_INTEGER" (64bitowa, całkowita wartość bez znaku).
64 bitowa wartość funkcji zwracana jest w EDX:EAX.
RDTSC to ta instrukcja właśnie.
function rdtsc:qword; assembler; asm
RDTSC // DB 00Fh, 031H
end;