JustCRC32C 1.2.0

dotnet add package JustCRC32C --version 1.2.0
NuGet\Install-Package JustCRC32C -Version 1.2.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="JustCRC32C" Version="1.2.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add JustCRC32C --version 1.2.0
#r "nuget: JustCRC32C, 1.2.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install JustCRC32C as a Cake Addin
#addin nuget:?package=JustCRC32C&version=1.2.0

// Install JustCRC32C as a Cake Tool
#tool nuget:?package=JustCRC32C&version=1.2.0

Just-CRC32C

License: LGPL nuget

Just a simple and fast CRC32C Wrapper with hardware acceleration.

The library overall is licensed under LGPLv3, so you can use it in a propriatary project, as long as you do not change the library itsef!

Software-fallback is taken from: here and Licensed under MIT License and improved by a tiny bit.

The netstandard2.0 variation for .netFramework uses p/invoke for the ANSI-C compatible JustCRC32C.Native library to archive hardware acceleration.

Benchmark results:


BenchmarkDotNet=v0.13.5, OS=Windows 10 (10.0.19045.3086/22H2/2022Update)
AMD Ryzen 5 5600X, 1 CPU, 12 logical and 6 physical cores
.NET SDK=8.0.100-preview.1.23115.2
  [Host]     : .NET 6.0.18 (6.0.1823.26907), X64 RyuJIT AVX2
  Job-LBWJTK : .NET 8.0.0 (8.0.23.11008), X64 RyuJIT AVX2

Runtime=.NET 8.0  RunStrategy=Throughput  

Method Arrays Mean Error StdDev Median Ratio RatioSD
JustCrc32C_HardwareX64 big a(...)ytes) [41] 318,356.546 μs 959.0297 μs 748.7473 μs 318,351.500 μs 1.00 0.00
JustCrc32C_Hardware big a(...)ytes) [41] 614,984.617 μs 1,256.5669 μs 981.0448 μs 614,961.000 μs 1.93 0.01
JustCrc32C_Software big a(...)ytes) [41] 1,203,940.725 μs 8,988.4146 μs 7,017.5629 μs 1,201,179.900 μs 3.78 0.03
Crc32_dot_NET big a(...)ytes) [41] 1,404,042.087 μs 8,606.4555 μs 8,050.4838 μs 1,403,310.000 μs 4.41 0.03
JustCrc32C_HardwareX64 mediu(...)ytes) [44] 25,509.060 μs 308.8947 μs 288.9403 μs 25,313.297 μs 1.00 0.00
JustCrc32C_Hardware mediu(...)ytes) [44] 48,946.426 μs 47.9768 μs 40.0628 μs 48,952.936 μs 1.92 0.02
JustCrc32C_Software mediu(...)ytes) [44] 96,605.061 μs 1,044.4672 μs 925.8930 μs 96,954.150 μs 3.79 0.05
Crc32_dot_NET mediu(...)ytes) [44] 112,126.815 μs 1,285.5934 μs 1,202.5449 μs 111,274.080 μs 4.40 0.07
JustCrc32C_HardwareX64 small(...)ytes) [37] 243.729 μs 0.2736 μs 0.2285 μs 243.614 μs 1.00 0.00
JustCrc32C_Hardware small(...)ytes) [37] 486.916 μs 0.5105 μs 0.4263 μs 486.761 μs 2.00 0.00
JustCrc32C_Software small(...)ytes) [37] 961.411 μs 4.4316 μs 4.1454 μs 961.110 μs 3.94 0.02
Crc32_dot_NET small(...)ytes) [37] 1,121.784 μs 10.2630 μs 9.6001 μs 1,121.731 μs 4.60 0.04
JustCrc32C_HardwareX64 small(...)ytes) [49] 2,519.386 μs 28.7737 μs 26.9149 μs 2,502.841 μs 1.00 0.00
JustCrc32C_Hardware small(...)ytes) [49] 4,980.498 μs 89.1571 μs 83.3976 μs 4,947.656 μs 1.98 0.05
JustCrc32C_Software small(...)ytes) [49] 9,880.705 μs 194.7273 μs 182.1480 μs 9,932.087 μs 3.92 0.09
Crc32_dot_NET small(...)ytes) [49] 11,428.893 μs 227.2975 μs 287.4585 μs 11,432.837 μs 4.53 0.13
JustCrc32C_HardwareX64 small(...)ytes) [38] 24.642 μs 0.4474 μs 0.4185 μs 24.575 μs 1.00 0.00
JustCrc32C_Hardware small(...)ytes) [38] 49.555 μs 0.9786 μs 1.1269 μs 49.009 μs 2.02 0.06
JustCrc32C_Software small(...)ytes) [38] 99.483 μs 1.9473 μs 2.9147 μs 100.555 μs 4.07 0.14
Crc32_dot_NET small(...)ytes) [38] 113.458 μs 2.2429 μs 3.4919 μs 111.205 μs 4.64 0.16
JustCrc32C_HardwareX64 tiny (...)ytes) [27] 1.903 μs 0.0293 μs 0.0274 μs 1.911 μs 1.00 0.00
JustCrc32C_Hardware tiny (...)ytes) [27] 3.530 μs 0.0283 μs 0.0265 μs 3.518 μs 1.86 0.04
JustCrc32C_Software tiny (...)ytes) [27] 11.966 μs 0.2357 μs 0.2205 μs 11.943 μs 6.29 0.14
Crc32_dot_NET tiny (...)ytes) [27] 13.929 μs 0.1878 μs 0.1757 μs 13.931 μs 7.32 0.13
Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 is compatible. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on JustCRC32C:

Package Downloads
TonSdk.Core

Core library with types and structures for TON Blockchain

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.2.0 401 7/29/2023
1.1.0 3,643 6/24/2023
1.0.2 137 6/23/2023
1.0.1 294 1/22/2023
1.0.0 295 1/7/2023