On Apr 9, 2008, at 8:25 AM, Martin C. Martin wrote:
> Hi,
>
> There's a potential optimization I mentioned on the Lisp inspired
> transforms page, where you could reorder bitfields in order to pack  
> them
> most efficiently.  Eerily, someone at my job just committed something
> that did just that.  We have a custom defstruct, called defstruct-bv,
> which allows you to specify bit fields.  (Lisp doesn't come with
> bitfields.)  Here's the checkin message:
>
> Log:
> At compile time, automatically optimize the layout of bits in a
> defstruct-bv definition to minimize the number of words used by the
> resulting struct.
>
> This is an instance of the bin-packing problem, which is NP-hard.
> Fortunately, it has a good heuristic solution, first-fit decreasing,
> which gets very close to optimal answers. I just implemented that as
> a wrapper around the existing defstruct-bv, which I renamed
> defstruct-bv-internal.
>
> There is no longer any reason to worry about the order of bit field
> definitions within a lisp struct.
>
> If you have a struct that you don't want this to happen to (perhaps
> because you have a performance consideration for the layout), add
> (:optimize-p NIL) as an option to defstruct-bv.
>
> I was somewhat disappointed with the results: most of our structs were
> already laid out as optimally as this algorithm is able to achieve.
> The single exception was the faring-atom struct, which got 16 bytes
> smaller.
>
> Best,
> Martin

I believe in Cython we would just rely on the C compiler to make  
optimizations of this nature.

- Robert


_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to