Тајмер високе перформансе у Делфима

За рутинске апликације за базе података на радној површини, додавање једне секунде времену извршења задатка ретко утиче на крајње кориснике - али када треба да обрадите милионе лишћа стабала или генеришете милијарде јединствених случајних бројева, брзина извођења постаје важнија.

Искључивање кода

У неким су апликацијама важне и срећом врло прецизне, прецизне методе мерења времена Делпхи пружа бројач високих перформанси за квалификовање ових пута.

Коришћење РТЛ-ова Сада Функција

Једна опција користи Сада функција. Сада, дефинисано у СисУтилс јединица, враћа тренутни датум и време система.

Прошло је неколико редака мере кода између „почетка“ и „заустављања“ неког процеса:

Функција Нов враћа тренутни датум и време система који су тачни до 10 милисекунди (Виндовс НТ и новији) или 55 милисекунди (Виндовс 98).

За врло мале интервале прецизност „Сада“ понекад није довољна.

Коришћење Виндовс АПИ-ја ГетТицкЦоунт

За још прецизније податке користите ГетТицкЦоунтВиндовс АПИ функција. ГетТицкЦоунт дохваћа број милисекунди који су прошли од покретања система, али функцију само има прецизност од 1 мс и не мора увек бити тачна ако рачунар остаје укључен дуго времена време.

instagram viewer

Прошло време се чува као ДВОРД (32-битна) вредност. Стога ће се време временски смањити на нулу ако се Виндовс стално користи 49,7 дана.

ГетТицкЦоунт такође је ограничена на тачност тајмера система (10/55 мс).

Висока прецизност истицања кода

Ако ваш рачунар подржава бројач перформанси високе резолуције, користите тастер КуериПерформанцеФрекуенци Виндовс АПИ функција за изражавање фреквенције у тачкама у секунди. Вредност броја зависи од процесора.

Тхе КуериПерформанцеЦоунтер функција преузима тренутну вредност бројача перформанси високе резолуције. Позивањем ове функције на почетку и на крају секције кода, апликација користи бројач као тајмер високе резолуције.

Тачност тајмера високе резолуције износи око неколико стотина наносекунди. Наносекунда је јединица времена која представља 0,000000001 секунди - или 1 милијарду секунде.

ТСтопВатцх: Делпхи имплементација бројача високе резолуције

Уз климање главом. Нет конвенције о именовању, бројач као ТСтопВатцх нуди Делпхи рјешење високе резолуције за прецизна мјерења времена.

ТСтопВатцх мери протекло време бројењем кликова тајмера у доњем механизму тајмера.

  • Тхе ИсХигхРесолутион својство показује да ли се тајмер заснива на бројачу перформанси високе резолуције.
  • Тхе Почетак метода започиње мерење протеклог времена.
  • Тхе Зауставити метода зауставља мерење протеклог времена.
  • Тхе ЕлапседМиллисецондс својство добија укупно протекло вријеме у милисекундама.
  • Тхе Истекло имовина добија укупно протекло вријеме у тајмерима.

Ево примера употребе: