Почему вы используете Boost Multi-Index Container, когда у вас есть только один ключ? Если вы не планируете добавлять дополнительные ключи в ближайшее время, вам следует просто использовать std::unordered_map
или std::map
.
Что касается хеш-таблиц и деревьев:
GCC-реализация unordered_map, например, никогда не сжимает свою таблицу, поэтому, если вы добавите много элементов, а затем удалите большинство из них, у вас останется что-то, что имеет довольно ужасную локальность данных (и, следовательно, низкую производительность с кэшированием. Алгоритмически хеш-таблицы могут быть привлекательными, но в реальных работающих системах они могут демонстрировать худшую производительность, чем деревья, особенно когда число элементов исчисляется сотнями или менее.