Потестил 5000 исключений под разными отладчиками
XP(sp2) AMD64 3500+ , DDR2-800мгц
Код:
var i,x,y:dword;
T1,T2:dword;
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Lines.Clear;
T1:=GetTickCount;
asm
rdtsc
mov T2,eax
end;
for i:=0 to 5000 do
try
asm mov [$ffffffff],eax end;
except
on е:Exception do begin
X:=e.InstanceSize;
Y:=X*12345678;
end;
end;
asm
rdtsc
clc
sub eax,T2
mov T2,eax
end;
memo1.Lines.Add('GetTickCount = '+floattostrf((GetTickCount-T1)/1000,ffFixed,10,3)+' мсек);
memo1.Lines.Add('rdtsc = '+floattostrf(T2/1000000,ffFixed,20,6));
end;
Без отладчика
GetTickCount = 0,032 мсек
rdtsc = 85,362372
Ida Pro
GetTickCount = 0,172 мсек * 5
rdtsc = 385,499853
делфи7
GetTickCount = 0,390 мсек * 12
rdtsc = 851,224255
Microsoft Visual Studio 5
GetTickCount = 3,594 мсек * 112
rdtsc = 3655,963401
Ollydbg
GetTickCount = 6,328 мсек * 197
rdtsc = 1100,028448
Ollydbg + Fhantom
GetTickCount = 0,001 мсек у меня суперкомпьютер

rdtsc = 0,000679
Ollydbg обнаружить проще всего.