Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.01.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.01.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
3-48847
ВикторК
2002-12-09 15:24
2003.01.16
как вызвать запрос, сохраннный в файле Access ?


14-49286
lak_b
2002-12-26 15:27
2003.01.16
как бы вы назвали прогу, которая делает FAQ-и?


1-48972
dor
2003-01-06 10:51
2003.01.16
Прога такая


14-49273
Johnny Smith
2002-12-24 12:11
2003.01.16
Давайте попинаем Борланд - благо, есть за что:


14-49230
race1
2002-12-22 17:17
2003.01.16
rar





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский