#simd #checksum #crc #crc64

crc64fast

基于SIMD加速的CRC64计算

3个版本 (稳定)

1.1.0 2024年1月18日
1.0.0 2020年5月2日
0.1.0 2019年11月20日

#90硬件支持

Download history 302/week @ 2024-03-13 332/week @ 2024-03-20 418/week @ 2024-03-27 375/week @ 2024-04-03 248/week @ 2024-04-10 378/week @ 2024-04-17 498/week @ 2024-04-24 193/week @ 2024-05-01 344/week @ 2024-05-08 272/week @ 2024-05-15 329/week @ 2024-05-22 343/week @ 2024-05-29 292/week @ 2024-06-05 266/week @ 2024-06-12 256/week @ 2024-06-19 253/week @ 2024-06-26

1,125 每月下载量
用于 5 个包 (3 个直接使用)

MIT/Apache

125KB
4.5K SLoC

crc64fast

Build status Latest Version Documentation

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 在以下许可证下双许可

无运行时依赖