На ноутбуке частота проца изменятеся в зависимости от нагруженности проца. Нужно узнать текущую частоту а не максимальную. Все что нашел в инете показывает максимальную частоту или по максимуму загружает проц в момент измерения частоты что ведет к увеличению частоты проца на максимум. Пжста оч желательно на Delphi.
А чем тебе не подходит код? Code: function GetCPUSpeed: double; const DelayTime = 500; // время измерения в милисекундах 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; Код вычисляет производительность проца по кол-ву тактов которое делает проц за определенный момент времяни. Если частота будет занижена, то и тактов он сделает меньше, что сразу будет заметно. Код настроен так что считается кол-во тактов за 0,5 секунды
При параллельном запуске этого кода и проги CPU-Z данные о частоту разные, CPU-Z показывает 798 MHz и временами она поднимается до 1597 MHz а код показывает в диапозоне 1595-1598 (повесил на таймер и интервалом 500 мсек). подозреваю что в момент замера частоты проц загружается на максимум и мгновенно возвращается на половину частоты, поэтому CPU-Z не фиксирует постоянной частоты 159х Мгц.