![]() |
VOOZH | about |
dotnet add package JustCRC32C --version 1.3.0
NuGet\Install-Package JustCRC32C -Version 1.3.0
<PackageReference Include="JustCRC32C" Version="1.3.0" />
<PackageVersion Include="JustCRC32C" Version="1.3.0" />Directory.Packages.props
<PackageReference Include="JustCRC32C" />Project file
paket add JustCRC32C --version 1.3.0
#r "nuget: JustCRC32C, 1.3.0"
#:package JustCRC32C@1.3.0
#addin nuget:?package=JustCRC32C&version=1.3.0Install as a Cake Addin
#tool nuget:?package=JustCRC32C&version=1.3.0Install as a Cake Tool
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 | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 is compatible. net5.0-windows net5.0-windows was computed. net6.0 net6.0 is compatible. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 is compatible. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 netcoreapp2.0 was computed. netcoreapp2.1 netcoreapp2.1 was computed. netcoreapp2.2 netcoreapp2.2 was computed. netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 is compatible. |
| .NET Standard | netstandard2.0 netstandard2.0 is compatible. netstandard2.1 netstandard2.1 was computed. |
| .NET Framework | net461 net461 was computed. net462 net462 was computed. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 was computed. net48 net48 was computed. net481 net481 was computed. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen40 tizen40 was computed. tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
Showing the top 4 NuGet packages that depend on JustCRC32C:
| Package | Downloads |
|---|---|
|
TonSdk.Core
Core library with types and structures for TON Blockchain |
|
|
TonSdk.Connect
Library that allows to interact with Ton Connect 2.0 |
|
|
Qwer.TonSdk.Core
Package Description |
|
|
Dzeta.TonSdk.Core
Core library with types and structures for TON Blockchain (Thread-safe fork with bug fixes and modern C#) |
Showing the top 1 popular GitHub repositories that depend on JustCRC32C:
| Repository | Stars |
|---|---|
|
continuation-team/TonSdk.NET
Native .Net Sdk for TON Blockchain and other TVM-based blockchains
|