#不可变 # #集合

graph-arena

高效存储不可变图结构的集合类型

1个不稳定版本

0.1.0 2020年11月13日

#122#不可变

MIT/Apache

5KB
65

Graph Arena

高效存储不可变图数据的集合类型。避免堆簇,强制本地性并减少复制的需求。

我应该什么时候使用这个?

在递归数据结构中,经常会遇到这样的代码

struct Expression {
    Add(Box<Expression>, Box<Expression>),
    // ...
}

从长远来看,这种方法会遇到几个问题

  • 大部分数据生活在堆上,但相关的数据不一定相邻。
  • 需要大量的分配来构建这些结构。
  • 克隆变得非常昂贵。

现在,我们尽可能地避免分配;alloc 是一个昂贵的操作。这就是为什么 Vec<T> 分配的内存比它(可能)使用的内存要多。所以我们每次推送更多数据时,不需要重新分配数据。

此外,我们希望相关的数据生活在附近的内存位置:现代CPU经过大量修改以利用局部性,这使得 Vec<T> 变得非常快的数据结构!

无运行时依赖