Reconsider `vector<bool>` underlying type
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 11.1k
- Forks
- 1.7k
- Avg merge
- 4d 15h
- Merged PRs (30d)
- 22
Description
https://github.com/microsoft/STL/blob/09e0dbbf150714d2a01c8ab0b9b8df02884bb0cc/stl/inc/vector#L2261
For x64 applications, 64-bit integer would make operations on large containers faster, whereas impact on the smaller ones is negligible (just slightly longer instructions encoding, with the same uops typically).
Larger allocation should not be a problem, since vector<bool> allocates dynamically, and the typical allocation granularity is 16.
As perf-sensitive apps are supposed to compile to 64-bits anyway, can change the typedef for all modes, not just _WIN64, if having different types for different modes turns out to be complicated.
vNext note: Resolving this issue will require breaking binary compatibility. We won't be able to accept pull requests for this issue until the vNext branch is available. See #169 for more information.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at stl/inc/vector around line 2261, where the vector underlying type is defined. Review the x64 and non-x64 implications, then benchmark large and small containers before proposing a change. Done means an approach is validated for vNext while accounting for the stated binary-compatibility break.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- performance
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100