Lazarus 64 Bit Compiler is slowly process than 32 bit Compiler
Original Reporter info from Mantis: lutufca
-
Reporter name: Lütuf Ertürk
Original Reporter info from Mantis: lutufca
- Reporter name: Lütuf Ertürk
Description:
I have Lazarus 1.1 SVN 37432...I downloaded FPC 2.6.0 i386-win32 and FPC 2.6.1 x86_64 versions...My program compiled with FPC 2.6.0 i386-win32 and FPC 2.6.1 x86_64...(I am making Picture Editor)
32 bit:
My code is processing in 32 ms
64 bit:
My code is processing in 115 ms
Steps to reproduce:
function IntToByte(i:Integer):Byte;
begin
if i>255 then Result:=255
else if i<0 then Result:=0
else Result:=i;
end;
procedure Contrast(var clip: TBGRABitmap; Amount: Integer);
var
p0:pbgrapixel;
rg,gg,bg,r,g,b,x,y: Integer;
begin
for y:=0 to clip.Height-1 do
begin
p0:=clip.scanline[y];
for x:=0 to clip.Width-1 do
begin
r:=p0[x].red;
g:=p0[x].green;
b:=p0[x].blue;
rg:=(Abs(127-r)*Amount)div 255;
gg:=(Abs(127-g)*Amount)div 255;
bg:=(Abs(127-b)*Amount)div 255;
if r>127 then r:=r+rg else r:=r-rg;
if g>127 then g:=g+gg else g:=g-gg;
if b>127 then b:=b+bg else b:=b-bg;
p0[x].red:=IntToByte(r);
p0[x].green:=IntToByte(g);
p0[x].blue:=IntToByte(b);
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var deneme:tbgrabitmap; t1,t2:int64;
begin
deneme:=tbgrabitmap.Create('test.JPG');
t1:=gettickcount;
contrast(deneme,100);
t2:=gettickcount;
deneme.Draw(image1.Canvas,0,0);
label1.Caption:='Time is: '+inttostr(t2-t1)+' ms';
end;
Mantis conversion info:
- Mantis ID: 23883
- OS: Windows
- OS Build: 7
- Build: 37432
- Platform: x86_64
- Version: 1.1 (SVN)