CPU종류 알아내기는..
해본적도 없어서리..
그저 속도 알아내는 루틴만 올립니다..
팬티엄 이상에서만 적용됨..
From 류..
---------
Function CPUSpeed:Double;
Const
DelayTime = 500;
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;
|