diff options
Diffstat (limited to 'vendor/github.com/klauspost/crc32/README.md')
| -rw-r--r-- | vendor/github.com/klauspost/crc32/README.md | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/vendor/github.com/klauspost/crc32/README.md b/vendor/github.com/klauspost/crc32/README.md new file mode 100644 index 000000000..febeba5eb --- /dev/null +++ b/vendor/github.com/klauspost/crc32/README.md @@ -0,0 +1,42 @@ +# 2025 revival + +For IEEE checksums AVX512 can be used to speed up CRC32 checksums by approximately 2x. + +Castagnoli checksums (CRC32C) can also be computer with AVX512, +but the performance gain is not as significant enough for the downsides of using it at this point. + +# crc32 + +This package is a drop-in replacement for the standard library `hash/crc32` package, +that features AVX 512 optimizations on x64 platforms, for a 2x speedup for IEEE CRC32 checksums. + +# usage + +Install using `go get github.com/klauspost/crc32`. This library is based on Go 1.24 + +Replace `import "hash/crc32"` with `import "github.com/klauspost/crc32"` and you are good to go. + +# changes +* 2025: Revived and updated to Go 1.24, with AVX 512 optimizations. + +# performance + +AVX512 are enabled above 1KB input size. This rather high limit is due to AVX512 may be slower to ramp up than +the regular SSE4 implementation for smaller inputs. This is not reflected in the benchmarks below. + +| Benchmark | Old MB/s | New MB/s | Speedup | +|-----------------------------------------------|----------|----------|---------| +| BenchmarkCRC32/poly=IEEE/size=512/align=0-32 | 17996.39 | 17969.94 | 1.00x | +| BenchmarkCRC32/poly=IEEE/size=512/align=1-32 | 18021.48 | 17945.55 | 1.00x | +| BenchmarkCRC32/poly=IEEE/size=1kB/align=0-32 | 19921.70 | 45613.77 | 2.29x | +| BenchmarkCRC32/poly=IEEE/size=1kB/align=1-32 | 19946.60 | 46819.09 | 2.35x | +| BenchmarkCRC32/poly=IEEE/size=4kB/align=0-32 | 21538.65 | 48600.93 | 2.26x | +| BenchmarkCRC32/poly=IEEE/size=4kB/align=1-32 | 21449.20 | 48477.84 | 2.26x | +| BenchmarkCRC32/poly=IEEE/size=32kB/align=0-32 | 21785.49 | 46013.10 | 2.11x | +| BenchmarkCRC32/poly=IEEE/size=32kB/align=1-32 | 21946.47 | 45954.10 | 2.09x | + +cpu: AMD Ryzen 9 9950X 16-Core Processor + +# license + +Standard Go license. See [LICENSE](LICENSE) for details. |
