Что касается памяти, документация для BitSet
имеет довольно четкие последствия. В частности:
Каждый установленный бит имеет текущий размер, который является количеством битов пространства
в настоящее время используется установленным битом. Обратите внимание, что размер связан с
реализация набора битов, так что это может измениться с реализацией.
длина набора битов относится к логической длине набора битов и составляет
определяется независимо от реализации.
Источник для классов библиотек Java открыт, и его можно легко проверить самостоятельно . В частности:
The internal field corresponding to the serialField "bits".
89
90 private long[] words;
Что касается скорости; это зависит от того, что вы делаете. В общем, не думайте о скорости раньше времени; используйте тот инструмент, который имеет смысл семантически и приводит к ясному коду. Оптимизация возможна только после того, как будут соблюдены требования к производительности и выявлены узкие места.
Приходить в SO и спрашивать, быстрее ли A, чем B, глупо по многим причинам, включая, но не ограничиваясь:
- Это зависит от приложения, к которому обычно никто не отвечает. Проанализируйте и профилируйте его в контексте, в котором он используется. Убедитесь, что это узкое место, которое на самом деле стоит оптимизировать.
- Такие вопросы, как этот, которые задают вопрос о скорости, обычно показывают, что ОП думает, что они заботятся об эффективности, но не желают профилировать и не определяют требования к производительности. Под поверхностью обычно красный флаг, указывающий на то, что ОП движется по неверному пути.
Я знаю, что это старый вопрос, но он возник недавно; и я считаю, что это стоит добавить.