Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Круглый стол
  
Правила КС
>> Настройки

Фильтр вопросов
>> Новые вопросы
отслеживать по
>> Новые ответы

Избранное

Страница вопросов
Поиск по КС


Специальные проекты:
>> К л ю к в а
>> Г о л о в о л о м к и

Вопрос №

Задать вопрос
Off-topic вопросы

Помощь

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  22:21[Войти] | [Зарегистрироваться]
Ответ на вопрос № 62538

26-05-2008 23:19
Добрый вечер. Простой вопрос по матчасти.

Мне говорили, что в API есть функция для измерения быстродейтсвия кода. Она принимает указатель на 32-битную переменную и после выполнения какого-то блока кода при повторном вызове (или вызове другой функции-спутника) в этой переменной оказывается значение, соответствующее быстродействию этого блока кода, т.е. чем больше значение, тем больше вкалывал процессор.

Как она называется, эта функция?

[+] Добавить в избранные вопросы

Отслеживать ответы на этот вопрос по RSS

Ответы:


Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице.
Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.

27-05-2008 03:53
Ну не совсем. Это скорее сколько процессорного времени было отдано на обработку данного блока кода. Кроме того, на мультипроцессорных системах он может врать, поэтому рекоммендуется явно задавать Affinity Mask через SetThreadAffinityMask
Почитайте вопросы на Круглом Столе по поводу этой функции. Плюс есть что-то в статьях на эту тему, но не помню точно где

27-05-2008 03:42
Вот несколько примеров по работе с QueryPerformanceCounter
Как определить скорость процессора:

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;


Высокоточный таймер

unit HRTimer;

interface

uses Windows;

type

  THRTimer = class(TObject)
    constructor Create;
    function StartTimer: Boolean;
    function ReadTimer: Double;

  private
    StartTime: Double;
    ClockRate: Double;

  public
    Exists: Boolean;

  end;

implementation

constructor THRTimer.Create;
var
  QW: TLargeInteger;

begin
  inherited Create;
  Exists := QueryPerformanceFrequency(QW);
  ClockRate := QW.QuadPart;
end;

function THRTimer.StartTimer: Boolean;
var
  QW: TLargeInteger;

begin
  Result := QueryPerformanceCounter(QW);
  StartTime := QW.QuadPart;
end;

function THRTimer.ReadTimer: Double;
var
  ET: TLargeInteger;

begin
  QueryPerformanceCounter(ET);
  Result := 1000.0 * (ET.QuadPart - StartTime) / ClockRate;
end;

end.


Авторство не мое, так что... извольте довольствоваться что есть;) Но может Вам пригодится!

27-05-2008 03:28 | Сообщение от автора вопроса
Да, спасибо огромное!

Хочу только уточнить. Написал вот так:


  var
  a,b:Int64;
  i:integer;
begin
  QueryPerformanceCounter(a);

  for i:=0 to 100000 do
    Tag:=Tag+1;

  QueryPerformanceCounter(b);

  Caption:=IntToStr(b-a);



В Caption возвращается число, соответствующее тому, насколько пахал процессор. Верно?

27-05-2008 02:28
QueryPerformanceCounter?

Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Какой месяц идет после марта?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
Тип сообщения:
Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве

    Страница избранных вопросов Круглого стола.
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования