Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.20;
Скачать: CL | DM;

Вниз

Как замерить микросекунды?   Найти похожие ветки 

 
Vadim S   (2003-10-07 14:03) [0]

Как замерить микросекунды?


 
MBo ©   (2003-10-07 14:09) [1]

QueryPerformanceCounter

поточнее - RDTSC команда процессора


 
Владислав ©   (2003-10-07 14:13) [2]

> MBo © (07.10.03 14:09) [1]

Кстати, а как показания RDTSC можно перевести в микросекунды?


 
NailMan ©   (2003-10-07 14:26) [3]

Наверно так:

Function GetProcessorFrequency:Int64;
Var L,N:Int64;Last:Cardinal;
begin
Last:=GettickCount;
asm
push eax
push edx
xor eax,eax
xor EDX,edx
RDTSC
mov dword ptr L[0],eax
mov dword ptr L[4],edx
pop edx
pop eax
end;
repeat
until (Gettickcount-Last)>=1000;
asm
push eax
push edx
xor eax,eax
xor EDX,edx
RDTSC
mov dword ptr N[0],eax
mov dword ptr N[4],edx
pop edx
pop eax
end;
Result:=N-L;
end;


Ну и делим на 1000000 - получаем число тиков в микросекунде.

А далее делим подсчитанное время процесса(в тиках) на величину микросекунды(в тиках).

Типа вот так.


 
NAlexey ©   (2003-10-07 14:48) [4]


procedure TForm1.Button1Click(Sender: TObject);
var
t1, t2, Fr: Int64;
Res: Double;
I: Integer;
begin
QueryPerformanceFrequency(Fr);
QueryPerformanceCounter(t1);
for I := 0 to 10000 do
Null;
QueryPerformanceCounter(t2);
Res := (t2-t1)/Fr;
ShowMessage(IntToStr(Round(1000000 * (t2 - t1)/Fr)) + " ns");
end;


 
Vadim S   (2003-10-07 15:40) [5]

У меня на D5
Function GetProcessorFrequency:Int64;
не хочет компилить говорит
Inline assembler error


 
Владислав ©   (2003-10-07 16:31) [6]

> Vadim S (07.10.03 15:40) [5]

Скорее всего из за этого: RDTSC. Поищи на этом форуме машинный код команды и вставь его так DB х, где машинный код.


 
me   (2003-10-07 20:06) [7]

Waitable Timer (NT/W2k/XP)


 
Anatoly Podgoretsky ©   (2003-10-07 20:26) [8]

Vadim S (07.10.03 15:40) [5]
Для Д5 вместо RDTSC - dw $310F


 
Владислав ©   (2003-10-08 09:08) [9]

> NailMan © (07.10.03 14:26) [3]
> NAlexey © (07.10.03 14:48) [4]

Спасибо, кстати! :)



Страницы: 1 вся ветка

Текущий архив: 2003.10.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
1-65499
Alesha aka Pokemon
2003-10-08 12:32
2003.10.20
Ссылки и указатели.


1-65501
Bovdur
2003-10-08 04:10
2003.10.20
Проблема ListBox


9-65302
DNT
2003-02-21 02:01
2003.10.20
Помогите научить машину ездить...


3-65320
Andy
2003-09-30 11:07
2003.10.20
Delphi не понимет запрос


1-65426
Islander
2003-10-07 17:48
2003.10.20
Как подгрузить ресурс из DLL?