[fpc-pascal] code optimization
Paulo Costa
paco at fe.up.pt
Thu Sep 23 19:50:45 CEST 2010
On 23/09/2010 18:09, stefan077 at web.de wrote:
>> Eduardo<nec556 at retena.com> wrote:
>
>>
>> Can you try optimize for size? In some cases, it reduces L2 / L3 cache
>> miss and runs faster than O3. It happens in other compilers and
>> languages too.
>>
> I just tried it: The code gets even slightly larger and much slower (almost a factor of 2).
Hi,
Try -Os3 instead of -O3
and try to reorder
type
TRectangle = object
width : Integer;
Area : Int64;
NextUnusedRectangle: Integer;
to
type
TRectangle = object
width : Integer;
NextUnusedRectangle: Integer;
Area : Int64;
and the var declaration:
var
i, MinValley, MinValleyWidth: Integer;
PrevBar, NextBar : Integer;
RectWidth : Integer;
NextBarWidth : Integer;
NewEntry, NewEntry2 : Integer;
MinValleyHeight : Integer;
MinValleyArea : Int64;
TotalAreaOfFittingRectangles: Int64;
CurrentRectangle : Integer;
PreviousRectangle : Integer;
OldFirstUnusedRectangle : Integer;
BarCase : TBarCase;
OldPrevNextRectangle : Integer;
It seems a matter of alignment. I tested and could extract a 5% speed
increase (XP and fpc 2.2.4). With 2.4.0 it may not work like that but is
worth a try.
Paulo Costa
More information about the fpc-pascal
mailing list