30个版本 (12个稳定版)
2.0.5 | 2024年5月20日 |
---|---|
2.0.4 | 2024年2月4日 |
2.0.2 | 2023年10月23日 |
2.0.0 | 2023年6月22日 |
0.1.2 | 2017年12月26日 |
#95 in 数据结构
66,069 每月下载量
在 381 个crate中(5个直接) 使用
150KB
4K SLoC
不可变块映射
一个缓存高效的不可变映射,其查找性能接近BTreeMap,插入性能合理。可选的写时复制(COW)可变操作将修改性能提升到BTreeMap的最佳案例的2倍,同时仍然提供快照功能,以及持久数据结构的Big O高效集合操作。
使用usize键的各种数据结构的查找性能图。完整的测试数据在bench/charts目录中。在Linux操作系统下,使用频率锁定在1.8 GHz的Intel Core i7 8550U上进行测试。
- OCaml: core map(来自Jane Street核心库),具有不同叶节点的AVL树和宽松的平衡约束。
- Chunkmap:这个库
- Chunkmap COW:仅使用COW操作的库
- BTreeMap:来自Rust标准库
- HashMap:来自Rust标准库
Chunkmap在随机访问键时非常接近BTreeMap,如果没有使用哈希。显然,如果你不需要有序数据,则可以使用HashMap。
插入性能,虽然在仅使用COW模式时不是最好的,但也不是很糟糕。在需要一次进行许多更新时,你可以通过使用insert_many来更快地完成。在某些情况下,例如使用排序输入从头构建映射,这甚至可能比HashMap更快。以下情况更典型,即将数据集的10%添加到映射中。
关于此图中COW条形图的说明。它表示仅在映射上使用可变COW操作,如果它在你应用程序中更快,则完全可以使用实际的insert_many调用而不是可变COW操作,如你所见,这取决于映射的大小。
许可证
该项目可根据您的选择在MIT或Apache 2下双许可。
依赖关系
~63–500KB
~10K SLoC