Вниз
Скачать: CL | DM;

Нужно програмно определить тактовую частоту процессора   Найти похожие ветки 

← →
Abzetdin   (2002-11-29 22:28) [0]

Друзья, пожалуйста подскажите как можно програмно определить тактовую частоту процессора - с помошью как можно короткого кода.

Благодарю


← →
Ich Hasse ©   (2002-11-29 22:32) [1]

Это из реестра...

function GettingCPUClock: string;
var
m_reg: TRegistry;
begin
m_reg:=TRegistry.Create;
m_reg.RootKey:=HKEY_LOCAL_MACHINE;
try
if m_reg.OpenKey("HARDWARE\DESCRIPTION\System\CentralProcessor\0", True) then
begin
try
Result:="CPUClock: "+IntToStr(m_reg.ReadInteger("~MHz"))+" MHz";
except
Result:="Unknown";
end;
m_reg.CloseKey;
end;
finally
m_reg.Free;
end;
end;


← →
Abzetdin   (2002-11-29 22:36) [2]

To Ich Hasse
Огромное - благодарю


← →
Ich Hasse ©   (2002-11-29 22:38) [3]

Это, если не через реестр, только соответственно время уйдет 500 мс.

function SpeedCPU: Double;
const
DelayTime = 500;
var
TimerHi : DWORD;
TimerLo : DWORD;
PriorityClass : Integer;
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;


← →
Diamond Cat ©   (2002-11-30 01:39) [4]

2 Ich Hasse если я правильно понял твой код, то он должен показывать сколько операций совершил процессор за заданный промежуток времени, соответственно при не полной загрузке проца, результат будет не верным, надо вставить какой-нибудь цикл, чтоб подгружать проц


← →
Ich Hasse ©   (2002-11-30 20:32) [5]

Именно, и этот код РАБОТАЕТ абсолютно правильно на любых процессорах!!! Я проверял. Частатота с точностью до сотых.
У меня Athlon XP 1500+ программа показала частоту 1333,33 MHz.


← →
Ich Hasse ©   (2002-11-30 20:39) [6]

string:=Format("CPU.Speed: %f MHz", [GetCPUSpeed]);

Вот этой строчкой можно получить из результата функции стринг.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.017 c
4-49361
DIV
2002-11-28 08:44
2003.01.16
Поток. Выскакивает сообщение A Win32 API functuion failed


3-48861
oleon
2002-12-23 17:59
2003.01.16
HOST_NAME() на MSSQL Server е.... почему не пашет?


3-48959
qwerty2
2002-12-23 12:05
2003.01.16
Запрос с Join


3-48854
Фтпуд
2002-12-23 17:18
2003.01.16
Вызов StoredProc из Delphi6 в которой используется пользовательск


14-49239
Wonder
2002-12-26 14:44
2003.01.16
В этом году вы увидите следующие серии фильма




   Наверх