3个版本 (稳定)
1.1.0 | 2024年1月18日 |
---|---|
1.0.0 | 2020年5月2日 |
0.1.0 | 2019年11月20日 |
#90 在 硬件支持 中
1,125 每月下载量
用于 5 个包 (3 个直接使用)
125KB
4.5K SLoC
crc64fast
SIMD加速的CRC-64/XZ(即CRC-64/GO-ECMA)计算(类似于 crc32fast
)。
用法
use crc64fast::Digest;
let mut c = Digest::new();
c.write(b"hello ");
c.write(b"world!");
let checksum = c.sum64();
assert_eq!(checksum, 0x8483_c0fa_3260_7d61);
性能
crc64fast
提供了两种快速实现,根据CPU特性在运行时选择性能最佳的一种。
- 一种快速、平台无关的基于表的实现,每次处理16字节。
- 一种基于现代处理器的SIMD无进位乘法的实现
- 在x86/x86_64上使用PCLMULQDQ + SSE 4.1
- 在AArch64(64位ARM)上使用PMULL + NEON
算法 | 吞吐量(x86_64) | 吞吐量(aarch64) |
---|---|---|
crc 3.0.1 | 0.5 GiB/s | 0.3 GiB/s |
crc64fast(表) | 2.3 GiB/s | 1.8 GiB/s |
crc64fast(simd) | 28.2 GiB/s | 20.0 GiB/s |
待办事项
此crate主要 intended for use in TiKV only. Features beyond AArch64 are unlikely to be implemented.
- 基于PMULL的AArch64支持
-
no_std
支持 - 模糊测试
- 自定义多项式
许可证
crc64fast 在以下许可证下双许可
- Apache 2.0许可证 (LICENSE-Apache 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)