Как быстро выполняется тот или иной участок кода в Delphi?

Здавствуйте,
Нужно узнать, как быстро выполняется тот или иной участок кода в Delphi. Например, для измерения скорости выполнения некоторых процедур или функций. Смотрел примеры в интернете, но через GetTickCount выходить не очень точно, а иногда и совсем не выдает результат. Прошу помощи.

Пробовал делать так:
spoiler
function GetCPUTick: Int64;
asm
   DB $0F,$31
end;

function CalibrateCPU: int64;
var
  t: cardinal;
begin
  t := GetTickCount;
  while t=GetTickCount do;
  Result := GetCPUTick;
  while GetTickCount<(t+400) do;
  Result := GetCPUTick - result;
  CPUClock := 2.5e-6*Result;
end;

function TicksToStr(const Value: int64): string;
begin
  Result := FloatToStrF(Value/CPUClock,fffixed,10,2)+ ' мс';
end;
_______________________________________________________________

CalibrateCPU;
  ticks := GetCPUTick;
    bubblesort(arr100,0,100);
  ticks := GetCPUTick - ticks;



Но вот результаты: 72000 мс (10000 элементов в масиве). Явно неверен результат, ибо очень много
  • Вопрос задан
  • 2815 просмотров
Решения вопроса 1
MaxiMonster
@MaxiMonster
Я пользовался процедурами, которые уже описаны в делфях:
QueryPerformanceFrequency - количество тактов за миллисекунду
QueryPerformanceCounter - количество тактов

Твой пример:
var
tc,tc2,tcins:int64;
QueryPerformanceFrequency(tcins);
QueryPerformanceCounter(tc);

bubblesort(arr100,0,100);

QueryPerformanceCounter(tc2);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы