|
Boost : |
Subject: Re: [boost] [unordered] allocators and EBO
From: Daniel James (daniel_james_at_[hidden])
Date: 2009-08-22 09:44:13
2009/7/15 Thorsten Ottosen <thorsten.ottosen_at_[hidden]>:
>
> When the allocator is empty, you should avoid storing them as members in
> different internal structures, and make the allcator a base class of some of
> these structures.
Hi,
Sorry for the late reply. I'm putting together a new version for
release in 1.41 or 1.42 which uses EBO and a couple of other changes
to reduce the size of the object. It's currently at 28 bytes on my
intel mac, a saving of 8 bytes. Although I'm not sure what the
performance implications are, so the final version might be a bit
bigger.
There are another 8 bytes that could be saved at the expense of
performance - by removing the pointer to the first non-empty bucket
and not storing the maximum load for the current maximum load factor
and number of buckets. I'm not really thinking of removing them right
now, I might in the future.
I'm not using the method you suggested, as I'm wary of it introducing
needless padding if the allocators aren't empty, but are very small (1
or 2 bytes). I'm using compressed_pair instead.
Daniel
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk