Optimal struct layout template?

Sergey Gromov snake.scaly at gmail.com
Mon Dec 15 00:23:52 PST 2008


Sun, 14 Dec 2008 13:17:45 -0800, Andrei Alexandrescu wrote:

> BCS wrote:
>> Reply to dsimcha,
>> 
>>> According to the spec, data stored in structs is guaranteed to be laid
>>> out in the order specified in the source code.  While this is
>>> necessary in some low-level code, I have a use case where I need to
>>> pack structs as efficiently as possible.  These structs are to be
>>> stored in an array, and for efficiency reasons I want to store them
>>> directly rather than storing pointers, so using classes is out of the
>>> question.  Does anyone know how to write a template that, given a
>>> tuple of types, will reorder the tuple so that it will produce the
>>> optimal struct layout?  I don't care, at least for now, if it assumes
>>> x86-32/DMD instead of handling the more general case.
>>>
>> 
>> would "align 1" work?
> 
> That could make things excruciatingly slow. What's really needed is (in 
> first approximation) to sort the members in decreasing order of size. 
> Odd-sized arrays of char foil this plan to some extent, which is where 
> the fun begins.

I would say in decreasing order of field/array element alignment
requirement.



More information about the Digitalmars-d mailing list