Am 14.07.2012 01:44, schrieb Jonas Maebe: > > 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.
The only drawback I see that people might sort fields for better cache usage but this is rarely the case imo. So if the optimization can be turned off, it should be fine. > > 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
