[fpc-devel] Class field reordering

Skybuck Flying skybuck2000 at hotmail.com
Mon Jul 16 09:22:39 CEST 2012



-----Original Message----- 
From: Jonas Maebe
Sent: Sunday, July 15, 2012 15:49
To: FPC developers' list
Subject: Re: [fpc-devel] Class field reordering


On 14 Jul 2012, at 14:16, Skybuck Flying wrote:

> I don't think this is a good idea.
>
> For example while debugging and looking at the memory in raw this would 
> lead to confusion.

"
By knowing the order of the fields, you still don't know their exact 
offsets. If you want to know their address, print @classinstance.fieldname
"

Yes but I do know the order of the fields which does help make some sense of 
it. With your suggested optimizations it would become much more 
confusing/mixed/shuffled.

I also find it slightly strange how there is now an even bigger disconnect 
between records and classes.

I also wonder how much of an optimization it actually is ? Maybe 0.000001% 
more performance ?

I rarely inspect the binary equivalent of a class instance, so your 
supposedly optimization is probably not a big deal, for records that would 
be a different matter since these are used in all kinds of api's and 
input/output situations.

I still find your suggested optimization weird though. CPU cache lines as 
far as I know are 64 bytes or so... Let's assume a class with 10 fields each 
4 bytes long, that's 40 bytes.

How would re-ordering fields lead to faster performance ? I don't really see 
that...

> It's already bad that Delphi adds invisible fields to classes so they 
> cannot be simply dumped to disk... (virtual method table pointers ?) this 
> would make it even worse.

"
If you want to program at an assembler level of abstraction, don't use high 
level language features.
"

I see no reason why a high level language could not be used to produce 
binary instructions and or files/data.

Bye,
  Skybuck. 




More information about the fpc-devel mailing list