[swift-evolution] Bit arrays

Taras Zakharko taras.zakharko at uzh.ch
Sun Jul 3 17:50:40 CDT 2016

> On 04 Jul 2016, at 00:44, Chris Lattner via swift-evolution <swift-evolution at swift.org> wrote:
>> On Jul 3, 2016, at 2:42 PM, Daryle Walker via swift-evolution <swift-evolution at swift.org> wrote:
>> Since objects aren't addressable by default, there wouldn't be the problems with a bit-packed Boolean collection that C++'s "vector<bool>" has. Does "[Bool]" currently have the option of packed optimization, or would  it have to be added via a proposal?  Or does it have to be a separate type instead?
> It has to be a separate “bitvector” type.
> FWIW, C++’s vector<bool> optimization is widely considered to be a bad idea, and many people have talked about trying to remove it from the C++ standard entirely.

AFAIK, the problem lies within the vector<bool> implementation. Other bit-packed implementations (e.g. boost:dynamic_bitset) are much more efficient. In certain cases, there are performance advantages to the bit packed representation as it is more cache-friendly. 

That said, I don’t think that such specialised data structures should be part of the standard library. I’d leave this to a third-party solution.

— Taras 

More information about the swift-evolution mailing list