Это зависит от того, что вы подразумеваете под «повышением производительности». Если вам нужно только 50 из них, и у вас не хватает памяти, тогда отдельные bools - всегда лучший выбор, чем набор битов. Они будут занимать больше памяти, но bools будет намного быстрее. Набор битов обычно реализуется в виде массива целых чисел (в эти целые числа упакованы значения типа bool). Таким образом, первые 32 bools (биты) в вашем наборе битов займут только 32-битное целое, но для чтения каждого значения сначала нужно выполнить несколько побитовых операций, чтобы замаскировать все значения, которые вам не нужны. Например. чтобы прочитать 2-й бит набора битов, вам необходимо:
- Найдите int, содержащий нужный бит (в данном случае это первый int)
- Битовый И это int с '2' (т.е. значение & 0x02), чтобы узнать, установлен ли этот бит
Однако, если память является узким местом, и у вас много операций с использованием битов, это может иметь смысл (например, если ваша целевая платформа - мобильный телефон, или это состояние в очень загруженном веб-сервисе)
ПРИМЕЧАНИЕ: std :: vector из bool обычно имеет специализацию для использования эквивалента набора битов , что делает его намного меньше, а также медленнее по тем же причинам. Так что, если скорость - проблема, вам лучше использовать вектор char (или даже int), или даже просто использовать массив старой школы bool.