On Jul 13, 2012, at 6:44 PM, Jonas Maebe <[email protected]> wrote:
> > Hi, > > I've implemented an optimization that reorders the instance fields of > Delphi-style classes (and only of Delphi-style classes) to minimise memory > gaps caused by alignment differences and odd sizes. The effect is the same as > when you would change the order of the fields in the source code to achieve > this effect. > > In general, I think this should be safe since unlike records and TP-style > objects, a Delphi class is normally never blockwritten to disk or so. There > is a switch to disable this transformation, but I'm wondering whether anyone > sees a problem with enabling it by default when -O2 or higher is used. > > It works fine with at least the compiler and Lazarus without any ill effects, > saving a small amount of memory for both (about 2.5MB on 87MB for the > Darwin/x86-64 compiler compiling itslf, and 2.5MB on 62.7MB for a Carbon/i386 > Lazarus right after startup and loading some source files). > > > Jonas > > PS: a similar reordering could be performed for local variables, although the > implementation would be quite different. Additionally, different kinds of > reordering, e.g. targeting cache improvements by putting fields/local > variables often used together next to each other, could also be implemented > in the future. > _______________________________________________ > fpc-devel maillist - [email protected] > http://lists.freepascal.org/mailman/listinfo/fpc-devel _______________________________________________ fpc-devel maillist - [email protected] http://lists.freepascal.org/mailman/listinfo/fpc-devel
