Help & resources
Where to ask questions:
Contact the maintainter of CRC-32C library:
- Robert Važan:
How to implement your own CRC algorithm:
- CRC primer by Ross Williams
- Mark Adler's CRC-32C code using CRC32 instruction with software fallback
- Intel's guide to computing CRC-32C using the CRC32 instruction
- Intel's guide to computing CRC for any polynomial using PCLMULQDQ instruction
- Zlib patch submitted by Intel utilizing PCLMULQDQ
Known bugs and issues:
- There's no managed .NET implementation. The library will fail under Mono, on ARM processors, and in various restricted contexts (ASP.NET, ClickOnce).
- PCLMULQDQ implementation would be desirable to get hardware acceleration on AMD processors.
- PCLMULQDQ can be also used to further optimize code that uses the CRC32 instruction.
- C++/CLI, mixed mode assembly, or something similar should be used to avoid unpacking the native DLLs in temporary folder.
- It would be of course better to create one great library that implements all the commonly used CRC variants instead of this specialized CRC-32C library.
- There are some fancy constants in the code that influence performance that I have taken unchanged from Mark Adler. It might be better to benchmarks various constants to see what works best.
- The code is optimized for long buffers. While performance for short buffers isn't bad, perhaps there are some interesting optimizations that can be done for short buffers.