Форум: "Основная";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];
ВнизКак замерить микросекунды? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.028 c