Я просто читаю статью о Boost.Flyweight Performance
Как вы видите в ссылке, накладные расходы фабрики составляют
- для hashed_factory
: ~2.5 * sizeof (слово)
- для set_factory
: 4 * sizeof (слово)
Основной вопрос ... почему 4 слова для набора, а не ноль ?
Насколько я знаю, использование хеша подразумевает вычисление и сохранение ключа хеша, в то время как использование набора не так: он реализован как красно-черное дерево, вставка и поиск занимает log (n),поэтому никакие значения не сохраняются и объем памяти должен быть равен нулю (с недостатком в том, что вместо одного сравнения в случае хэша у вас будут сравнения log (n)).Где ошибка?