скалогрыз писал(а):12400 и в Delphi тоже?
Вместо HexToSymbol я в цикл вписал a:=0;. a - integer;
И получил что FPC показывает 6730, а D7 - 1982. То есть D7 тут быстрее в 3.4 раза.
Добавлено спустя 1 минуту 47 секунд:скалогрыз писал(а):Ну хватит код кусками выдавать. Целиком проекты! Целиком!
Заархивируй и добавь к сообщению!
var
  Form1: TForm1;
RDTSC_TimeStamp:Record
Case Byte of
 1:(Whole:Int64);
 2:(Lo,Hi:Longint);
End;
Дельфийский код.
implementation
{$R *.dfm}
FUNCTION RDTSC_Int64:Int64;
Begin
 Asm
  db $0F; db $31;
  {$IFDEF Cpu386}
  mov [RDTSC_TimeStamp.Lo], eax
  mov [RDTSC_TimeStamp.Hi], edx
  {$ELSE}
  db D32
  mov word ptr RDTSC_TimeStamp.Lo, AX
  db D32
  mov word ptr RDTSC_TimeStamp.Hi, DX
  {$ENDIF}
  End;
 Result:=RDTSC_TimeStamp.Whole;
End;
 FUNCTION HEXToSymbol(b:byte):byte;
Begin
 if b<58 then HEXToSymbol:=b-48;
 if b>64 then HEXToSymbol:=b-55;
End;
procedure TForm1.Button1Click(Sender: TObject);
var
i,a:Integer;
T1,T2:Int64;
B:Byte;
begin
 T1:=RDTSC_Int64;
 for i:=0 to 1000 do
 Begin
  //B:=HEXToSymbol(100);
  a:=0;
 End;
 T2:=RDTSC_Int64;
 Edit1.Text:=IntToStr(T2-T1);
 Edit2.Text:=IntToStr(T1);
end;
FPC код
FUNCTION HexToSymbol(b:Byte):Byte;
Begin
 if b<58 then HexToSymbol:=b-48;
 if b>64 then HexToSymbol:=b-55;
End;
FUNCTION Get__RDTSC:Int64;ASSEMBLER;REGISTER;
Asm
 RDTSC
End;
var
T1,T2:Int64;
B:Byte;
i,j,a:Longint;
Begin
 (*
 for i:=0 to 10 do
 Begin
  WriteLn(Get__RDTSC);
 End;
 *)
 ClrScr;
 ReadKey;
 for j:=0 to 19 do
 Begin
  T1:=Get__RDTSC;
  for i:=0 to 1000 do
  Begin
   //B:=HexToSymbol(100);
   a:=0;
  End;
  T2:=Get__RDTSC;
  WriteLn(T2-T1);
 End;
 //WriteLn(T1);
 //WriteLn(T2);
 ReadKey;
End.