Optimal struct layout template?
SeeWebsiteForEmail at erdani.org
Mon Dec 15 11:48:55 PST 2008
Sergey Gromov wrote:
> 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
Sounds indeed right. Even simpler than I thought!
More information about the Digitalmars-d