提振.轻量级内存消耗

Boost.Flyweight memory consumption

本文关键字:内存 轻量级 提振      更新时间:2023-10-16

我正在读一篇关于Boost的文章。轻量级选手表演

从链接中可以看到,工厂的开销是
- for hashed_factory: ~2.5 * sizeof(word)
- for set_factory: 4 * sizeof(word)

基本问题是....为什么4个单词表示set而不是0

据我所知,使用哈希意味着计算和存储哈希键,而使用set not:它被实现为红黑树,插入和查找需要log(n),所以没有存储值,内存开销应该为零(缺点是,在哈希的情况下,不是一次比较,而是有log(n)次比较)。

RB树的每个节点包含一个指向左子节点的指针、一个指向右子节点的指针、颜色和一段数据。前三个被算作开销,这意味着它不为0。我不太确定为什么他们说这是4,当3个元素很容易适合3个词,但也许他们计数在其他东西(如父节点指针,这不是严格必要的,或内存分配开销,虽然这是不太可能的)。