Ich messe die CPU Geschwindigkeit mit der hinlänglich bekannten Methode.
Leider haben Notebooks mit mobilen Prozessoren die Eigenschaft, eine variable Taktfrequenz zu haben.
Auch die neuen Athlon 64 haben dieses Feature, wenn man es aktiviert.
Wie kann ich veranlassen, dass die CPU in der maximalen Taktfrequenz fährt ?
vielen Dank !
Hier der Code um den cpu Speed zu messen
Delphi-Quellcode:
function cpuspeed: Double;
const
DelayTime = 500;
// measure time in ms
var
TimerHi, TimerLo: DWORD;
PriorityClass, Priority: Integer;
begin
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
Sleep(10);
asm
dw 310Fh
// rdtsc
mov TimerLo, eax
mov TimerHi, edx
end;
Sleep(DelayTime);
asm
dw 310Fh
// rdtsc
sub eax, TimerLo
sbb edx, TimerHi
mov TimerLo, eax
mov TimerHi, edx
end;
SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);
Result := TimerLo / (1000.0 * DelayTime);
end;
// von procedure cpuspeed