Это программное обеспечение на языке Delphi, которое измеряет скорость процессора в МГц с помощью инструкции RDTSC (Read Time Stamp Counter), которая читает регистр счётчика времени процессора.
Следующий шаг:
Функция GetCPUSpeed устанавливает приоритет текущего потока на "реальный" и затем спит 10 миллисекунд.
Затем она использует inline-ассемблер для чтения регистра счётчика времени (RDTSC) два раза, с задержкой в 500 миллисекунд между ними. Это даёт нам два таймстампа: TimerLo и TimerHi.
Функция вычитывает первый таймстамп из второго для получения истекающего времени.
Затем она конвертирует истекающее время в МГц, делая его на задержку (500 миллисекунд) и умножая на 1000 (поскольку есть 1000 микросекунд в миллисекунде).
Результат возвращается в виде вещественного числа.
Событийный обработчик кнопки Button1Click вызывает функцию GetCPUSpeed и отображает результат в строковом формате ("x.y МГц") в контроле редактирования (edit1.text).
Некоторые примечания:
Это программное обеспечение предполагает, что процессор поддерживает RDTSC. Некоторые более старые процессоры могут не поддерживать эту инструкцию.
Аккуратность измерения зависит от различных факторов, таких как точность регистра счётчика времени и тайминг задержек.
Вы можете изменить время задержки (DelayTime) для торговли между точностью измерения и скоростью выполнения.
Альтернативное решение с более современным подходом:
functionGetCPUSpeed:Double;constDelayTime=1000000;// микросекундvarStartTime,EndTime:Int64;beginStartTime:=TStopwatch.GetTickCount;Sleep(DelayTime);EndTime:=TStopwatch.GetTickCount;Result:=(EndTime-StartTime)/1000.0*1000000.0;// конвертируем в МГцend;
В этом коде используется класс TStopwatch из модуля System.Diagnostics, который предоставляет более точный и удобный способ измерения интервалов времени. Остальная часть кода остается аналогичной.
В статье описывается способ определения скорости процессора на языке Delphi с использованием инструкции rdtsc и расчета времени выполнения операции Sleep.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.