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

Получение количества тактов процессора с момента перезагрузки

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



Автор: Григорьев Павел
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
Получение количества тактов процессора с момента перезагрузки.

Производится вызов команды RDTSC x86 процессора.
Имеются во всех процах начиная с Pentium/586.
Подходит для всех версий Дельфи, где есть тип Int64.
Для остальных можно переписать слегка -
результат перекладывать в две переменные Integer.

Я ее использую для определения кол-ва
процессорного времени на выполнение куска кода.

Зависимости: можно использовать на всех процах, начиная с Pentium
Автор:       Григорьев Павел, xli@rambler.ru, Щёлково-4
Copyright:   справочник по командам процессора Pentium
Дата:        17 декабря 2003 г.
***************************************************** }

function RDTSC: int64; assembler;
asm
  db $0F,$31 // RDTSC
end;

Пример использования:

var
  TimePeriod: int64;
  ...
begin
  ...
  TimePeriod := RDTSC;
  {кусок анализируемого кода}
  TimePeriod := RDTSC - TimePeriod;
  {полученное значение TimePeriod можно анализировать}
  ...
end;

Вот перевод текста на русский язык:

Функция RDTSC

Функция RDTSC объявлена как ассемблерная функция с типом возвращаемого значения int64. Блок asm содержит одиночную инструкцию $0F,$31, которая является x86-ассемблерским кодом для RDTSC.

Пример использования

В разделе примера использования код демонстрирует, как использовать функцию RDTSC. Вот что происходит:

  1. Объявляется переменная int64 под именем TimePeriod.
  2. Вызывается функция RDTSC и присваивается ее результат TimePeriod. Это получает текущий счетчик циклов процессора.
  3. После выполнения кода, который нужно анализировать ({кусок анализируемого кода}), вызывается функция RDTSC снова и вычитается предыдущее значение из нового. Это дает период времени, проведенный в анализируемом коде.
  4. Полученное значение TimePeriod можно затем анализировать для определения, сколько времени занял код.

Замечания

  • RDTSC - это процессор-специфическая инструкция, возвращающая текущий счетчик циклов, который можно использовать для измерения времени выполнения или расчета истекшего времени.
  • Этот код работает на всех x86-процессорах, начиная с Pentium/586.
  • Функция RDTSC совместима с версиями Delphi, поддерживающими тип int64.
  • Если вам нужно использовать этот код в не-x86-среде (например, на ARM), вам придется переписать его соответствующим образом.

В целом, это код предоставляет простой и эффективный способ измерять время выполнения кода с помощью счетчика циклов процессора.

Получение количества тактов процессора с момента перезагрузки производится вызовом команды RDTSC x86 процессора, доступной в всех процессорах начиная с Pentium/586.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 06:38:44/0.0033679008483887/0