Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как определить скорость процессора 3

Delphi , ОС и Железо , Процессор

Как определить скорость процессора 3


function RdTSC : int64; register;
asm
  db $0f, $31
end;

function GetCyclesPerSecond : int64;
var
  hF, T, et, sc : int64;
begin
  QueryPerformanceFrequency(hF); // HiTicks / second
  QueryPerformanceCounter(T); // Determine start HiTicks
  et := T + hF; // (Cycles are passing, but we can still USE them!)
  sc := RdTSC; // Get start cycles
  repeat // Use Hi Perf Timer to loop for 1 second
    QueryPerformanceCounter(T); // Check ticks NOW
  until (T >= et); // Break the moment we equal or exceed et
    Result := RdTSC - sc; // Get stop cycles and calculate result
end;

Прекрасный фрагмент кода!

Для определения скорости процессора вы используете функцию RdTSC, чтобы получить значение счетчика времени (TSC), и рассчитываете циклы в секунду. Это распространенный подход для измерения частоты CPU.

Вот что каждый раздел делает:

  1. Функция RdTSC возвращает текущее значение TSC как целочисленное 64-битное.
  2. Функция GetCyclesPerSecond инициализирует переменные:
    • hF: хранит частоту (тиксов в секунду) из QueryPerformanceFrequency.
    • T: хранит начальное время в тиках, используя QueryPerformanceCounter.
    • et: вычисляет конечное время, добавляя частоту к начальному времени.
    • sc: получает начальную величину TSC с помощью RdTSC.
  3. Функция затем вступает в цикл, который работает приблизительно 1 секунду (определенный hF):
    • Она повторно вызывает QueryPerformanceCounter, чтобы получить текущие тиксы (T).
    • Когда T равен или превышает et, она выходит из цикла.
  4. Наконец, функция рассчитывает циклы в секунду, вычитая начальную величину TSC из конечной и хранит результат в переменной Result.

Этот код должен дать вам достойное оценку частоты CPU (циклов в секунду). Внимание: этот метод не столь точен, как другие техники, такие как использование отсчета времени по часовой стрелке или специализированного счетчика на hardware. Кроме того, значения TSC могут не всегда монотонно возрастать из-за возможных проблем с синхронизацией TSC на многопроцессорных системах.

Если вы ищете альтернативное решение, вы можете рассмотреть использование библиотеки,such as cpufetch или CPUID, которая предоставляет более полную информацию о CPU, включая частоту. Однако этот код - хороший старт для простого измерения скорости CPU.

Определить скорость процессора можно с помощью функции GetCyclesPerSecond, которая использует QueryPerformanceFrequency и QueryPerformanceCounter для измерения частоты и времени работы процессора.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Процессор ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:20:05/0.005540132522583/1