Форум: "WinAPI";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];
Внизкак узнать частоту и загрузку(%) процессора Найти похожие ветки
← →
влад (2004-11-15 22:59) [0]как узнать частоту и загрузку в% процессора, если можно подробно
← →
Игорь Шевченко © (2004-11-15 23:05) [1]Частоту из реестра
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0\~MHz
Загрузку - искать готовый код в интернете, их много
← →
Jeer © (2004-11-16 10:56) [2]Частоту через QueryPerformanceFrequency. (tick per sec)
← →
clickmaker © (2004-11-16 10:59) [3]
> влад (15.11.04 22:59)
> как узнать частоту
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0\~MHz
этот ключик есть только в NT-системах, а в общем случае см. код (на паскаль сам переводи)_inline unsigned __int64 GetCycleCount(void)
{
_asm _emit 0x0F
_asm _emit 0x31
}
int getCPUSpeed(void)
{
unsigned __int64 m_startcycle;
unsigned __int64 m_res;
unsigned __int64 m_overhead;
unsigned cpuspeed10;
m_overhead = 0;
m_startcycle = GetCycleCount();
Sleep(1000);
m_res = GetCycleCount()-m_startcycle-m_overhead;
cpuspeed10 = (unsigned)(m_res/100000);
cpuspeed10 = cpuspeed10/10;
return cpuspeed10;
}
← →
Игорь Шевченко © (2004-11-16 11:58) [4]clickmaker © (16.11.04 10:59) [3]
А в заголовке написано - WinXP.
Ты проверял свой код при разной степени загрузки процессора ?
← →
clickmaker © (2004-11-16 12:02) [5]
> [4] Игорь Шевченко © (16.11.04 11:58)
> Ты проверял свой код при разной степени загрузки процессора
> ?
Да. Разброс +-20 Мгц
← →
Jeer © (2004-11-16 18:05) [6]clickmaker © (16.11.04 12:02) [5]
Это много:))
При правильном измерении частоты на интервале 200 ms разброс не превышает долей MHz
← →
grigory © (2004-11-16 18:36) [7]unit UCPUSpd;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, Buttons;
type
TFormCPUSpeed = class(TForm)
PageControl: TPageControl;
BitBtnStart: TBitBtn;
BitBtnStop: TBitBtn;
TabSheet: TTabSheet;
LabelCPUSpeed: TLabel;
LabelInfo: TLabel;
LabelWeb: TLabel;
procedure BitBtnStartClick(Sender: TObject);
procedure BitBtnStopClick(Sender: TObject);
private
{ Private declarations }
Stop: Boolean;
public
{ Public declarations }
end;
var
FormCPUSpeed: TFormCPUSpeed;
implementation
{$R *.DFM}
function GetCPUSpeed: Double;
const
DelayTime = 500; // measure time in ms
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;
procedure TFormCPUSpeed.BitBtnStartClick(Sender: TObject);
begin
BitBtnStart.Enabled := False;
BitBtnStop.Enabled := True;
Stop := False;
while not Stop do
begin
LabelCPUSpeed.Caption := Format("CPU speed: %f MHz", [GetCPUSpeed]);
Application.ProcessMessages;
end;
BitBtnStart.Enabled := True;
BitBtnStop.Enabled := False;
end;
← →
Jeer © (2004-11-16 18:51) [8]Действительно, давно известно:))
Но здесь вылезает небольшая систематическая погрешность.
Скажем на 2020 MHz показывает 2023 MHz.
Лучшие результаты получаются с использованием rdtsc, QueryPerfomanceCounter и QueryPerfomanceFrequency.
А переключать приоритет нити конечно же надо.
← →
grom (2004-11-16 20:15) [9]CPU Usage выводит загрузку процессора в %.
http://micsoft.narod.ru/bonus.html
← →
VMcL © (2004-11-16 21:25) [10]>>Jeer © (16.11.04 18:51) [8]
Как я недавно узнал, есть такая злостная веЗЧь: DOT, которая кладет на лопатки QueryPerfomanceCounter и QueryPerfomanceFrequency.
http://delphimaster.net/view/15-1099843607/
← →
Jeer © (2004-11-17 10:11) [11]Это известно, но если нужен ПК как управляющая система, то надо и походить к нему соответственно.
Кроме того не все материнки нормально выдерживают все заложенные в них уровни DOT.
А лично я отношусь к любому overcloking скептически.
Надежность важнее:))
← →
Jeer © (2004-11-17 10:43) [12]http://www.digitlife.ru/cpu/msi-dot-gbt-cia-review.shtml
А вот здесь для интересующихся "где собака порылась".
На мой взгляд, увеличение частоты FSB при увеличении температуры процессора вообще-то некорректно, т.к. это положительная обратная связь в терминах системы управления.
Поэтому никаких DOT и CIA даже не буду включать и другим не советую:))
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.048 c