aleksey_gregul (21.12.2010 19:48, просмотров: 154) ответил ReAl на А ОС-то какая? DOS? А то остальные как прервут работу, как вернут управление милисекунд так через 5-15, так стандартные милисекундный таймер и нормальное разрешение имеет. Кстати, если говорить о GetTickCount(), то
Если читать с LPT-порта, могут быть и задержки. Но если сделать что-то свое, PCI_йное, можно достаточно точно мерять. Я когда-то делал свою PCI-плату на рассыпухе. Использовал RDTSC таким образом:
function rdtsc:int64;
var i64:dword absolute result;
begin
asm
push eax
push edx
db 0fh
db 31h
mov i64,eax
mov i64+4,edx
pop edx
pop eax
end;
end;
На время измерений делал
procedure cli;
begin
if not winnt then asm cli end
else
begin
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
end;
end;
Здесь даже мышь не шелохнется. Процессор занят только моей задачей.
procedure sti;
begin
if not winnt then asm sti end
else
begin
SetPriorityClass(GetCurrentProcess, NORMAL_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_NORMAL);
end;
end;
Получал очень достойные результаты. Это под дельфи5