Воскресенье, 19.05.2024, 17:04
Приветствую Вас Гость | RSS
delphicode.clan.su
Форма входа
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
 
 КАК УЗНАТЬ ЧАСТОТУ ПРОЦЕССОРА
  
 Добавляем на форму компоненты TButton и TEdit. Для определения частоты создадим функцию GetCPUSpeed. Исходный код функции и пример использования представлен ниже:
  
 

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
const
ID_BIT=$200000; // EFLAGS ID bit

implementation

{$R *.dfm}

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); 
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);
except end;
end;

procedure TForm1.Button1Click(Sender: TObject);

var cpuspeed:string;
begin
cpuspeed:=Format('%f MHz', [GetCPUSpeed]);
edit1.text := cpuspeed;
end;

end.

  
  
  
  
 
Источник: http://www.delphi3000.com