1 个不稳定版本
0.1.0 | 2022年10月24日 |
---|
1080 在 算法 中
33 每月下载量
用于 forma-render
51KB
1K SLoC
crumsort-rs
crumsort的并行Rust移植版。
此移植的目标是擅长排序分布良好的数据,因此它不是一个完全的1:1副本。
临时注意事项
由于在最初编写时存在一些约束,因此存在一些限制
- 比crumsort更快地排序均匀数据,但严重倾斜的分布较慢(缺少
crumsort_analyze
函数) - 旨在作为排序大型(
u64或
u128
)整数的解决方案 - 仅排序
Copy + Default
数据,作为限制使用unsafe
的一种方式 - 缺少未并行化的版本(数据需要实现
Send
) - 缺少
*_by
和*_by_key
排序替代方案(数据需要实现Ord
)
请随时通过提交拉取请求来提交对这些领域的改进。
与并行pdqsort(Rayon)的基准测试
所有基准测试都在M1 Pro上的bench
示例上运行
cargo run --release --example bench
均匀分布的随机u32
长度
算法
吞吐量
改进
212
pdqsort
32.15Mkeys/s
0.00%
212
crumsort
38.70Mkeys/s
20.39%
216
pdqsort
129.96Mkeys/s
0.00%
216
crumsort
176.95Mkeys/s
36.16%
220
pdqsort
226.31Mkeys/s
0.00%
220
crumsort
368.09Mkeys/s
62.65%
224
pdqsort
227.80Mkeys/s
0.00%
224
crumsort
399.89Mkeys/s
75.54%
均匀分布的随机u64
长度
算法
吞吐量
改进
212
pdqsort
33.18Mkeys/s
0.00%
212
crumsort
40.79Mkeys/s
22.91%
216
pdqsort
151.24Mkeys/s
0.00%
216
crumsort
237.48Mkeys/s
57.02%
220
pdqsort
218.64Mkeys/s
0.00%
220
crumsort
364.79Mkeys/s
66.85%
224
pdqsort
226.83Mkeys/s
0.00%
224
crumsort
385.42Mkeys/s
69.92%
注意
这不是一个官方支持的Google产品。
依赖项
~1.5MB
~25K SLoC