7 个版本
| 0.2.0 | 2023年7月31日 |
|---|---|
| 0.1.5 | 2022年1月17日 |
| 0.1.3 | 2021年7月7日 |
| 0.1.1 | 2021年6月30日 |
#268 在 内存管理
136 每月下载量
用于 2 个 Crates(通过 mbroker)
93KB
2K SLoC
segvec
此包提供 SegVec 数据结构。
它类似于 Vec,但以递增大小的“段”分配内存。这涉及到一些权衡
优点
- 即使在
push操作期间SegVec必须增长,元素地址在整个操作过程中保持稳定。 - 调整大小只分配所需额外的空间,不需要复制。
缺点
- 操作速度较慢(一些,如
insert、remove和drain,要慢得多),对于SegVec而言,比Vec要慢(多个指针解引用,将索引映射到(段, 偏移)对) - 直接切片不可用(即没有
&[T]或&mut [T]),尽管slice和slice_mut是可用的
用例
- 您有一个生命周期长的
Vec,其大小在整个程序的生命周期中在非常小和非常大之间波动。 - 您有一个大的只追加
Vec,并且会从对元素的稳定引用中受益
功能
small-vec- 使用SmallVec代替Vec来存储段列表,使得前几个段头可以在栈上运行。可以加快对小型SegVec值的访问。thin-segments- 使用ThinVec代替Vec来存储每个段的数据,这意味着每个段头只占用单个usize的空间,而不是使用Vec时的 3 个。
许可证:MIT
依赖项
~175–305KB