#simd #crc32 #crc #checksum

librscrc

librscrc 是一个包含 crc32 算法的集合,支持多种方法以及自定义多项式。

1 个不稳定版本

0.1.0 2022年7月7日

#2556算法

Download history 25/week @ 2024-04-01

64 次每月下载

MIT/Apache

42KB
867

librscrc

CircleCI

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

无运行时依赖