1 个不稳定版本
0.1.0 | 2022年7月7日 |
---|
#2556 在 算法
64 次每月下载
42KB
867 行
librscrc
librscrc 是一个包含 crc32 算法的集合,支持如 simd 和基于表的查找以及 rust 实现的自定义多项式。
目前支持的 simd 架构有
- x86
- x86_64
- aarch64
使用内嵌函数的调用使用了不安全代码。可以通过在 Cargo.toml 中设置 default-features = false
来选择不使用 simd 和硬件 crc 内嵌函数支持,从而禁用 simd 和硬件 crc 内嵌函数支持。
性能
性能可能因硬件而异。本节仅用于比较各种方法。
- 使用 aarch64 上的硬件 crc 指令需要夜间编译器,并启用 "nightly" 功能标志。
- 如果运行时检测到所需的 CPU 特性,则使用 simd 和硬件指令。如果没有找到,则回退到基于查找的方法。
- simd 方法基于英特尔发布的论文
算法(crc32c) | x86_64(吞吐量) | aarch64(吞吐量) |
---|---|---|
原始 | 249.97 MiB/s | 221.81 MiB/s |
查找 | 3.6584 GiB/s | 2.2660 GiB/s |
硬件 crc | 10.483 GiB/s | 21.026 GiB/s |
simd | 25.479 GiB/s | 18.079 GiB/s |