Crates.io | crc-32c |
lib.rs | crc-32c |
version | 0.1.0 |
source | src |
created_at | 2023-11-14 16:11:45.332485 |
updated_at | 2023-11-14 16:11:45.332485 |
description | Comput CRC-32C using accelerated SIMD and fusion algorithm |
homepage | https://github.com/lizhanhui/crc-32c |
repository | https://github.com/lizhanhui/crc-32c |
max_upload_size | |
id | 1035004 |
size | 16,585 |
This repository is to provide a Rust crate to compute CRC-32C of data buffer on modern X86/ARM64 chips.
Algorithms, accelerated by SIMD intrinsics and mathematics manipulations, are described in reference 1 and 2
Ultimate benchmark performance should be something as below:
Broadwell @ 3.00GHz | Skylake @ 3.20GHz | Ice Lake @ 2.40GHz | |
---|---|---|---|
crc32_4k | 10.19 GB/s 21.3 b/c | 12.64 GB/s 21.3 b/c | 11.59 GB/s 21.3 b/c |
crc32_4k_pclmulqdq | 23.32 GB/s 48.8 b/c | 28.12 GB/s 47.5 b/c | 27.45 GB/s 50.5 b/c |
crc32_4k_three_way | 26.99 GB/s 56.5 b/c | 33.26 GB/s 56.1 b/c | 29.18 GB/s 53.7 b/c |
crc32_4k_fusion | 44.44 GB/s 93.0 b/c | 55.65 GB/s 93.9 b/c | 50.36 GB/s 92.7 b/c |
Crate | Throughput 4K | Throughtput 1M |
---|---|---|
crc | 286.60 MiB/s | 286.02 MiB/s |
crc32c | 3.3124 GiB/s | 3.5175 GiB/s |