Страницы

Поиск по вопросам

пятница, 11 января 2019 г.

Почему BitSet реализован на массиве long

Нигде, почему-то, в интернете не объясняется выбор long в качестве хранилица BitSet. Например, почему нельзя использова вместо него short. Пусть мы заполняем структуру N ( N< 64 ) элементами, тогда получится, что в сравнении с short , оверхед по памяти будет больше.


Ответ

Не представляю что такое Bitset и с java не знаком. Но если делать какой то базовый класс для работы с битами и не делать его с меняемым размером элементов хранения я бы остановился на выборе максимального по размеру типа влезающего в регистр процессора для данной архитектуры. С точки зрения процессора операция с short и long занимает одинаковое время выполнения. Кроме того, операция с данными в оперативной памяти не выравненными на ширину шины данных обычно происходит дольше. В связи с этим данные стараются выравнивать на ширину шины. Попытки выровнять short приведет к образованию неиспользуемого пространства, что сведет экономию памяти к 0
На современной архитектуре intel используется 64 разрядные регистры и необходимо такое же выравнивание данных в памяти, для быстрой работы

Комментариев нет:

Отправить комментарий