скалогрыз писал(а):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.