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