Boost.Flyweight内存消耗

时间:2011-10-13 14:18:39

标签: c++ boost stl

我刚刚阅读了关于Boost.Flyweight Performance

article

正如您在链接中看到的那样,工厂的开销是   - hashed_factory:~2.5 * sizeof(word)
  - set_factory:4 * sizeof(word)

基本问题是...... 为什么要设置4个字而不是零

据我所知,使用哈希意味着计算和存储哈希键,而使用一组不是:它实现为红黑树,插入和查找需要log(n),所以没有值存储并且内存开销应该为零(缺点是,在散列的情况下,您将进行log(n)比较而不是一次比较)。错误在哪里?

1 个答案:

答案 0 :(得分:1)

RB树的每个节点都包含一个指向左子节点的指针,指向右子节点的指针,颜色和一个数据。前三个计为开销,这意味着它不是0.我不太确定为什么当3个元素很容易适应3个单词时为什么会说它为4,但也许它们会计入其他内容(如父节点指针,这不是绝对必要的,或者是内存分配开销,尽管这不太可能。)