Содержание материала

 

 

Code:

const

ID_BIT=$200000; // EFLAGS ID bit

 

function GetCPUSpeed: Double;

const

DelayTime = 500;

var

TimerHi, TimerLo: DWORD;

PriorityClass, Priority: Integer;

begin

try

PriorityClass := GetPriorityClass(GetCurrentProcess);

Priority := GetThreadPriority(GetCurrentThread);

 

SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);

SetThreadPriorit(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);

except end;

end;

 

 

procedure TForm1.Button1Click(Sender: TObject);

var cpuspeed:string;

begin

cpuspeed:=Format('%f MHz', [GetCPUSpeed]);

edit1.text := cpuspeed;

end;

 

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить