Цель - построить очень большие деревья.
Под очень большим я подразумеваю сотни миллионов узлов, умещающихся в несколько гигабайт.
Проблема в том, что обычные структуры данных имеют слишком много накладных расходов. Я не могу позволить себе иметь "нодовые" объекты и дочерние "карты". Мне нужно напрямую закодировать его в память очень компактным способом.
Поэтому мне было интересно, существует ли некая эффективная для памяти реализация деревьев, имеющих целые числа в качестве ключа и значения, без внутреннего использования объектов, поэтому требуется (4 байта для ключа + 4 байта для значения + 4 байта для дочернего индекса + несколько байт для свободного пространства хеширования (в среднем 15 байт на запись), что позволило бы мне использовать внешние сопоставления int <-> keys и int <-> значения для поиска в дереве.
Любой
PS: при внутреннем использовании объектов используется как минимум в 5 раз больше места: 8 ссылок + 4 дополнительных хеш-пространства + 16 заголовков объектов + 8 ключей ref + 8 значений ref + 8 родительских ссылок + 8 дочерних ссылок + (16 + x) для дети отображают obj = почти 76 + x байт на запись. (например, нашей реализации по умолчанию требовалось около 100 байт на запись)