Open EduardSergeev opened 1 year ago
Latest .NET frameworks have better support for hardware-accelerated CRC32 implementations:
Note: Arm does support both CRC32 and CRC32C (since ARMv8.1) as does System.Runtime.Intrinsics.Arm (since .NET 5): CRC32 and CRC32C.
Test results (.NET 7):
Crc32.Crc32Algorithm Throughput: 435.0 MB/s K4os.Hash.Crc Throughput: 434.5 MB/s Crc32C.Standard Throughput: 1379.8 MB/s Force.Crc32.Crc32CAlgorithm Throughput: 1822.1 MB/s Force.Crc32.Crc32Algorithm Throughput: 1724.3 MB/s Force.Crc32.Intrinsics.Crc32CAlgorithm Throughput: 11116.4 MB/s
c7g.large
Crc32.Crc32Algorithm Throughput: 352.8 MB/s K4os.Hash.Crc Throughput: 309.6 MB/s Crc32C.Standard Throughput: 1113.0 MB/s Force.Crc32.Crc32CAlgorithm Throughput: 1692.4 MB/s Force.Crc32.Crc32Algorithm Throughput: 1694.0 MB/s Force.Crc32.Intrinsics.Crc32CAlgorithm Throughput: 3278.2 MB/s Force.Crc32.Intrinsics.Crc32Algorithm Throughput: 3293.3 MB/s
Fixes #16
Latest .NET frameworks have better support for hardware-accelerated CRC32 implementations:
Note: Arm does support both CRC32 and CRC32C (since ARMv8.1) as does System.Runtime.Intrinsics.Arm (since .NET 5): CRC32 and CRC32C.
Test results (.NET 7):
c7g.large
EC2: AWS Graviton3 CPU):Fixes #16