Форум: "Система";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];
ВнизИзмерение быстродейсвия кода Найти похожие ветки
← →
Mirovodin (2002-09-23 15:58) [0]Кто какие способы знает? Собсвенно необходима максимальная точность. В принципе есть неплохая функция GetTickCount:
T1:=GetTickCount;
...
Анализируемый код
...
T2:=GetTickCount;
Время выполнения T2-T2 в мс, но может кто еще что посоветует? может можно такты процессора получать ?
← →
Anatoly Podgoretsky (2002-09-23 16:03) [1]Ассемблерная команда RDTSC - точность один тик процессора
← →
RV (2002-09-23 16:05) [2]не знаю то, или не то
вот когда-то нарыл, не проверял
function GetCPUSpeed: Double;
const
DelayTime = 500;
var
TimerHi : DWORD;
TimerLo : DWORD;
PriorityClass : Integer;
Priority : Integer;
begin
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
Sleep(100);
asm
DW 310Fh // rdtsc
MOV TimerLo, EAX
MOV TimerHi, EDX
end;
Sleep(DelayTime);
asm
DW 310Fh // rdtsc
SUB EAX, TimerLo
SBB EDX, TimerHi
MOV TimerLo, EAX
MOV TimerHi, EDX
end;
SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);
Result := TimerLo / (1000.0 * DelayTime);
end;
// Usage ...
LabelCPUSpeed.Caption := Format("CPU speed: %f MHz", [GetCPUSpeed]);
← →
MBo (2002-09-23 16:05) [3]>может можно такты процессора получать ?
Да, можно QueryPerfomanceCounter или RDTSC (0x0F, 0x31, если не ошибаюсь)
Причем можно для повышения точности учитывать время на вызов (однократный Старт-Стоп)
← →
Mirovodin (2002-09-23 16:23) [4]Спасибо, нашел рабочий пример:
http://www.delphikingdom.com/treasury/rdtsc.htm
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c