Cryptography Benchmarks
This page collects the BenchmarkDotNet measurements for every hash implementation that ships with CryptoHives.Foundation.Security.Cryptography. Each algorithm family has its own benchmark, measuring performance across representative payload sizes (128 bytes through 128 KiB) to capture both latency and throughput characteristics.
Updating benchmark documentation
- Run the cryptography benchmarks (either via the helper script or directly through BenchmarkSwitcher):
# Run a specific algorithm family
.\scripts\run-benchmarks.ps1 -Project Cryptography -Family BLAKE
# Run a single algorithm
.\scripts\run-benchmarks.ps1 -Project Cryptography -Family SHA256
# Direct invocation
cd tests/Security/Cryptography
dotnet run -c Release --framework net10.0 -- --filter *SHA256*
- Mirror the freshly generated markdown into the documentation folder:
.\scripts\update-benchmark-docs.ps1 -Package Cryptography
The script trims the machine header from the BenchmarkDotNet export, writes it once to benchmarks/machine-spec.md, and stores each algorithm's benchmark table in its own file.
Machine profile
Machine Specification
The benchmarks were run on the following machine:
BenchmarkDotNet v0.15.8, Windows 11 (10.0.26200.7840/25H2/2025Update/HudsonValley2)
AMD Ryzen 5 7600X 4.70GHz, 1 CPU, 12 logical and 6 physical cores
.NET SDK 10.0.103
[Host] : .NET 10.0.3 (10.0.3, 10.0.326.7603), X64 RyuJIT x86-64-v4
.NET 10.0 : .NET 10.0.3 (10.0.3, 10.0.326.7603), X64 RyuJIT x86-64-v4
Method=TryComputeHash Job=.NET 10.0 Runtime=.NET 10.0
Toolchain=net10.0
Note: Results are machine-specific and may vary between systems. Run benchmarks locally for your specific hardware.
Highlights by algorithm family
| Family |
Leader |
Key Insight |
| SHA-2 |
OS (SHA-NI) |
Hardware SHA-NI gives OS ~4.5× advantage; managed beats BouncyCastle by ~13% |
| SHA-3/Keccak |
Managed |
Scalar Keccak outperforms OS by ~30% and SIMD variants by 25–35% |
| BLAKE2b/2s |
BouncyCastle |
Native optimizations give BouncyCastle ~15% edge; managed SIMD competitive |
| BLAKE3 |
Native (Rust) |
Rust interop ~1.4× faster at small inputs, ~12× at large due to multi-chunk parallelism; SSSE3 managed ~4× faster than BouncyCastle |
| Streebog |
Managed |
1.4–1.8× faster than OpenGost/BouncyCastle |
| Kupyna |
Managed |
T-table optimization beats BouncyCastle by 30–45% |
| LSH |
Managed |
First .NET implementation; no BouncyCastle comparison available |
| KMAC |
Managed |
Managed beats OS by ~30% and BouncyCastle by ~48% at all sizes |
| Ascon |
Managed |
~33% faster than BouncyCastle across all input sizes |
Benchmark results by algorithm family
SHA-2 Family
The OS SHA-256/SHA-512 implementations leverage SHA-NI hardware instructions (available on AMD Zen+ and Intel Ice Lake+), providing ~4.5× speedup over any software implementation. For pure managed code, CryptoHives outperforms BouncyCastle by approximately 13% through loop unrolling and hardcoded round constants.
Key observations:
- OS (106 ns @ 128B): Uses SHA-NI hardware acceleration
- Managed (476 ns @ 128B): Optimized scalar with unrolled rounds
- BouncyCastle (545 ns @ 128B): Reference scalar implementation
SHA-224
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA-224 · Managed |
128B |
477.8 ns |
2.75 ns |
2.44 ns |
- |
| TryComputeHash · SHA-224 · BouncyCastle |
128B |
554.2 ns |
3.75 ns |
3.51 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-224 · Managed |
137B |
477.9 ns |
3.62 ns |
3.38 ns |
- |
| TryComputeHash · SHA-224 · BouncyCastle |
137B |
555.5 ns |
1.65 ns |
1.37 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-224 · Managed |
1KB |
2,658.8 ns |
19.53 ns |
18.27 ns |
- |
| TryComputeHash · SHA-224 · BouncyCastle |
1KB |
3,084.0 ns |
16.98 ns |
15.88 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-224 · Managed |
1025B |
2,653.2 ns |
8.80 ns |
7.81 ns |
- |
| TryComputeHash · SHA-224 · BouncyCastle |
1025B |
3,068.3 ns |
8.17 ns |
6.83 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-224 · Managed |
8KB |
20,159.0 ns |
104.45 ns |
97.70 ns |
- |
| TryComputeHash · SHA-224 · BouncyCastle |
8KB |
23,220.9 ns |
89.18 ns |
79.06 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-224 · Managed |
128KB |
319,156.5 ns |
1,513.25 ns |
1,341.46 ns |
- |
| TryComputeHash · SHA-224 · BouncyCastle |
128KB |
368,010.8 ns |
1,549.08 ns |
1,449.01 ns |
- |
SHA-256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA-256 · OS Native |
128B |
105.9 ns |
0.10 ns |
0.09 ns |
- |
| TryComputeHash · SHA-256 · Managed |
128B |
475.7 ns |
1.77 ns |
1.65 ns |
- |
| TryComputeHash · SHA-256 · BouncyCastle |
128B |
544.6 ns |
2.10 ns |
1.75 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-256 · OS Native |
137B |
107.1 ns |
0.13 ns |
0.11 ns |
- |
| TryComputeHash · SHA-256 · Managed |
137B |
479.5 ns |
3.93 ns |
3.68 ns |
- |
| TryComputeHash · SHA-256 · BouncyCastle |
137B |
557.0 ns |
2.47 ns |
2.19 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-256 · OS Native |
1KB |
463.9 ns |
0.82 ns |
0.76 ns |
- |
| TryComputeHash · SHA-256 · Managed |
1KB |
2,653.8 ns |
4.73 ns |
3.69 ns |
- |
| TryComputeHash · SHA-256 · BouncyCastle |
1KB |
3,029.7 ns |
11.72 ns |
10.96 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-256 · OS Native |
1025B |
464.7 ns |
0.63 ns |
0.58 ns |
- |
| TryComputeHash · SHA-256 · Managed |
1025B |
2,662.7 ns |
9.97 ns |
9.33 ns |
- |
| TryComputeHash · SHA-256 · BouncyCastle |
1025B |
3,030.8 ns |
12.01 ns |
11.23 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-256 · OS Native |
8KB |
3,279.1 ns |
7.85 ns |
7.34 ns |
- |
| TryComputeHash · SHA-256 · Managed |
8KB |
20,110.8 ns |
80.43 ns |
71.30 ns |
- |
| TryComputeHash · SHA-256 · BouncyCastle |
8KB |
22,913.2 ns |
126.59 ns |
112.22 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-256 · OS Native |
128KB |
51,507.6 ns |
116.16 ns |
102.97 ns |
- |
| TryComputeHash · SHA-256 · Managed |
128KB |
319,496.5 ns |
1,958.00 ns |
1,735.72 ns |
- |
| TryComputeHash · SHA-256 · BouncyCastle |
128KB |
363,341.9 ns |
1,262.36 ns |
1,119.05 ns |
- |
SHA-384
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA-384 · OS Native |
128B |
347.2 ns |
1.73 ns |
1.53 ns |
- |
| TryComputeHash · SHA-384 · Managed |
128B |
408.4 ns |
1.82 ns |
1.70 ns |
- |
| TryComputeHash · SHA-384 · BouncyCastle |
128B |
476.3 ns |
2.86 ns |
2.67 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-384 · OS Native |
137B |
346.6 ns |
1.34 ns |
1.25 ns |
- |
| TryComputeHash · SHA-384 · Managed |
137B |
410.6 ns |
1.18 ns |
1.10 ns |
- |
| TryComputeHash · SHA-384 · BouncyCastle |
137B |
479.3 ns |
2.93 ns |
2.74 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-384 · OS Native |
1KB |
1,386.6 ns |
6.47 ns |
6.06 ns |
- |
| TryComputeHash · SHA-384 · Managed |
1KB |
1,800.5 ns |
6.05 ns |
5.37 ns |
- |
| TryComputeHash · SHA-384 · BouncyCastle |
1KB |
2,099.4 ns |
8.92 ns |
8.34 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-384 · OS Native |
1025B |
1,388.2 ns |
5.00 ns |
4.43 ns |
- |
| TryComputeHash · SHA-384 · Managed |
1025B |
1,806.5 ns |
9.75 ns |
9.12 ns |
- |
| TryComputeHash · SHA-384 · BouncyCastle |
1025B |
2,103.6 ns |
5.42 ns |
5.07 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-384 · OS Native |
8KB |
9,661.3 ns |
32.85 ns |
29.12 ns |
- |
| TryComputeHash · SHA-384 · Managed |
8KB |
12,947.5 ns |
49.51 ns |
41.34 ns |
- |
| TryComputeHash · SHA-384 · BouncyCastle |
8KB |
15,073.9 ns |
67.43 ns |
63.07 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-384 · OS Native |
128KB |
152,381.4 ns |
858.42 ns |
760.96 ns |
- |
| TryComputeHash · SHA-384 · Managed |
128KB |
202,934.2 ns |
508.43 ns |
450.71 ns |
- |
| TryComputeHash · SHA-384 · BouncyCastle |
128KB |
237,772.4 ns |
988.84 ns |
924.96 ns |
- |
SHA-512
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA-512 · OS Native |
128B |
342.3 ns |
1.80 ns |
1.68 ns |
- |
| TryComputeHash · SHA-512 · Managed |
128B |
410.5 ns |
1.77 ns |
1.66 ns |
- |
| TryComputeHash · SHA-512 · BouncyCastle |
128B |
476.9 ns |
2.13 ns |
1.89 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512 · OS Native |
137B |
341.9 ns |
1.16 ns |
1.03 ns |
- |
| TryComputeHash · SHA-512 · Managed |
137B |
414.2 ns |
1.24 ns |
1.04 ns |
- |
| TryComputeHash · SHA-512 · BouncyCastle |
137B |
481.8 ns |
1.39 ns |
1.23 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512 · OS Native |
1KB |
1,388.8 ns |
9.06 ns |
8.47 ns |
- |
| TryComputeHash · SHA-512 · Managed |
1KB |
1,797.8 ns |
6.02 ns |
5.34 ns |
- |
| TryComputeHash · SHA-512 · BouncyCastle |
1KB |
2,098.4 ns |
5.73 ns |
4.79 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512 · OS Native |
1025B |
1,385.7 ns |
6.32 ns |
5.91 ns |
- |
| TryComputeHash · SHA-512 · Managed |
1025B |
1,809.3 ns |
14.31 ns |
12.68 ns |
- |
| TryComputeHash · SHA-512 · BouncyCastle |
1025B |
2,106.2 ns |
12.93 ns |
11.46 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512 · OS Native |
8KB |
9,697.6 ns |
34.06 ns |
31.86 ns |
- |
| TryComputeHash · SHA-512 · Managed |
8KB |
12,974.6 ns |
41.78 ns |
37.04 ns |
- |
| TryComputeHash · SHA-512 · BouncyCastle |
8KB |
15,086.1 ns |
56.08 ns |
52.46 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512 · OS Native |
128KB |
152,037.3 ns |
654.76 ns |
580.42 ns |
- |
| TryComputeHash · SHA-512 · Managed |
128KB |
203,532.8 ns |
721.82 ns |
675.19 ns |
- |
| TryComputeHash · SHA-512 · BouncyCastle |
128KB |
237,491.1 ns |
730.41 ns |
647.49 ns |
- |
SHA-512/224
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA-512/224 · Managed |
128B |
407.5 ns |
1.55 ns |
1.45 ns |
- |
| TryComputeHash · SHA-512/224 · BouncyCastle |
128B |
488.5 ns |
2.02 ns |
1.89 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/224 · Managed |
137B |
409.5 ns |
1.52 ns |
1.42 ns |
- |
| TryComputeHash · SHA-512/224 · BouncyCastle |
137B |
493.8 ns |
2.88 ns |
2.70 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/224 · Managed |
1KB |
1,824.8 ns |
8.85 ns |
8.28 ns |
- |
| TryComputeHash · SHA-512/224 · BouncyCastle |
1KB |
2,111.5 ns |
5.59 ns |
5.23 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/224 · Managed |
1025B |
1,804.4 ns |
4.00 ns |
3.34 ns |
- |
| TryComputeHash · SHA-512/224 · BouncyCastle |
1025B |
2,113.9 ns |
10.21 ns |
9.55 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/224 · Managed |
8KB |
12,933.2 ns |
39.76 ns |
37.20 ns |
- |
| TryComputeHash · SHA-512/224 · BouncyCastle |
8KB |
15,082.9 ns |
48.16 ns |
45.05 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/224 · Managed |
128KB |
203,338.8 ns |
389.89 ns |
345.63 ns |
- |
| TryComputeHash · SHA-512/224 · BouncyCastle |
128KB |
237,308.5 ns |
533.76 ns |
445.72 ns |
- |
SHA-512/256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA-512/256 · Managed |
128B |
407.0 ns |
0.83 ns |
0.65 ns |
- |
| TryComputeHash · SHA-512/256 · BouncyCastle |
128B |
489.4 ns |
1.40 ns |
1.17 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/256 · Managed |
137B |
409.4 ns |
1.55 ns |
1.37 ns |
- |
| TryComputeHash · SHA-512/256 · BouncyCastle |
137B |
494.2 ns |
4.63 ns |
4.33 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/256 · Managed |
1KB |
1,800.5 ns |
8.13 ns |
7.20 ns |
- |
| TryComputeHash · SHA-512/256 · BouncyCastle |
1KB |
2,122.1 ns |
10.22 ns |
9.06 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/256 · Managed |
1025B |
1,801.0 ns |
6.46 ns |
5.72 ns |
- |
| TryComputeHash · SHA-512/256 · BouncyCastle |
1025B |
2,124.1 ns |
13.17 ns |
11.67 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/256 · Managed |
8KB |
12,936.4 ns |
55.83 ns |
52.23 ns |
- |
| TryComputeHash · SHA-512/256 · BouncyCastle |
8KB |
15,107.9 ns |
79.57 ns |
74.43 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/256 · Managed |
128KB |
203,372.9 ns |
674.11 ns |
630.56 ns |
- |
| TryComputeHash · SHA-512/256 · BouncyCastle |
128KB |
237,803.7 ns |
777.49 ns |
649.24 ns |
- |
Keccak-derived Families
The managed Keccak core uses an optimized scalar implementation that outperforms both the OS-provided SHA-3 and SIMD variants (AVX2/AVX-512F). This is unusual—typically SIMD accelerates cryptographic operations—but Keccak's irregular permutation structure doesn't map efficiently to SIMD lanes.
Key observations:
- Managed scalar is ~30% faster than OS SHA-3 and 25–35% faster than SIMD variants
- SIMD implementations (AVX2/AVX-512F) are provided but disabled by default
- All Keccak-derived algorithms (SHA-3, SHAKE, cSHAKE, TurboSHAKE, KT) share the same optimized core
SHA-3 Family
SHA3-224
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA3-224 · Managed |
128B |
213.0 ns |
0.69 ns |
0.61 ns |
- |
| TryComputeHash · SHA3-224 · AVX2 |
128B |
283.7 ns |
0.85 ns |
0.80 ns |
- |
| TryComputeHash · SHA3-224 · AVX512F |
128B |
293.6 ns |
0.86 ns |
0.81 ns |
- |
| TryComputeHash · SHA3-224 · BouncyCastle |
128B |
332.9 ns |
0.92 ns |
0.82 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-224 · Managed |
137B |
211.1 ns |
0.90 ns |
0.84 ns |
- |
| TryComputeHash · SHA3-224 · AVX2 |
137B |
282.7 ns |
0.87 ns |
0.82 ns |
- |
| TryComputeHash · SHA3-224 · AVX512F |
137B |
291.0 ns |
0.75 ns |
0.70 ns |
- |
| TryComputeHash · SHA3-224 · BouncyCastle |
137B |
331.1 ns |
0.99 ns |
0.87 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-224 · Managed |
1KB |
1,635.5 ns |
7.08 ns |
6.62 ns |
- |
| TryComputeHash · SHA3-224 · AVX2 |
1KB |
2,217.6 ns |
7.35 ns |
6.88 ns |
- |
| TryComputeHash · SHA3-224 · AVX512F |
1KB |
2,280.9 ns |
6.59 ns |
6.17 ns |
- |
| TryComputeHash · SHA3-224 · BouncyCastle |
1KB |
2,455.5 ns |
11.45 ns |
10.15 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-224 · Managed |
1025B |
1,630.5 ns |
5.98 ns |
5.30 ns |
- |
| TryComputeHash · SHA3-224 · AVX2 |
1025B |
2,221.0 ns |
3.75 ns |
3.51 ns |
- |
| TryComputeHash · SHA3-224 · AVX512F |
1025B |
2,281.7 ns |
8.33 ns |
7.79 ns |
- |
| TryComputeHash · SHA3-224 · BouncyCastle |
1025B |
2,455.3 ns |
8.87 ns |
7.87 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-224 · Managed |
8KB |
11,272.2 ns |
61.36 ns |
57.40 ns |
- |
| TryComputeHash · SHA3-224 · AVX2 |
8KB |
15,369.2 ns |
47.67 ns |
44.59 ns |
- |
| TryComputeHash · SHA3-224 · AVX512F |
8KB |
15,847.0 ns |
36.74 ns |
34.36 ns |
- |
| TryComputeHash · SHA3-224 · BouncyCastle |
8KB |
17,371.0 ns |
74.00 ns |
61.79 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-224 · Managed |
128KB |
180,312.4 ns |
646.17 ns |
604.43 ns |
- |
| TryComputeHash · SHA3-224 · AVX2 |
128KB |
246,186.0 ns |
988.98 ns |
876.71 ns |
- |
| TryComputeHash · SHA3-224 · AVX512F |
128KB |
253,422.3 ns |
608.78 ns |
569.45 ns |
- |
| TryComputeHash · SHA3-224 · BouncyCastle |
128KB |
277,812.2 ns |
1,350.14 ns |
1,196.86 ns |
- |
SHA3-256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA3-256 · Managed |
128B |
208.8 ns |
0.87 ns |
0.81 ns |
- |
| TryComputeHash · SHA3-256 · OS Native |
128B |
273.1 ns |
1.68 ns |
1.58 ns |
- |
| TryComputeHash · SHA3-256 · AVX2 |
128B |
280.1 ns |
0.70 ns |
0.65 ns |
- |
| TryComputeHash · SHA3-256 · AVX512F |
128B |
291.4 ns |
0.79 ns |
0.74 ns |
- |
| TryComputeHash · SHA3-256 · BouncyCastle |
128B |
330.4 ns |
1.34 ns |
1.19 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-256 · Managed |
137B |
450.3 ns |
2.00 ns |
1.87 ns |
- |
| TryComputeHash · SHA3-256 · OS Native |
137B |
502.9 ns |
2.64 ns |
2.34 ns |
- |
| TryComputeHash · SHA3-256 · AVX2 |
137B |
599.0 ns |
1.62 ns |
1.44 ns |
- |
| TryComputeHash · SHA3-256 · AVX512F |
137B |
615.6 ns |
1.78 ns |
1.58 ns |
- |
| TryComputeHash · SHA3-256 · BouncyCastle |
137B |
628.1 ns |
2.21 ns |
2.07 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-256 · Managed |
1KB |
1,599.4 ns |
5.20 ns |
4.61 ns |
- |
| TryComputeHash · SHA3-256 · OS Native |
1KB |
1,912.2 ns |
5.95 ns |
5.56 ns |
- |
| TryComputeHash · SHA3-256 · AVX2 |
1KB |
2,194.4 ns |
5.90 ns |
5.52 ns |
- |
| TryComputeHash · SHA3-256 · AVX512F |
1KB |
2,274.9 ns |
7.04 ns |
6.58 ns |
- |
| TryComputeHash · SHA3-256 · BouncyCastle |
1KB |
2,455.3 ns |
7.73 ns |
7.23 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-256 · Managed |
1025B |
1,604.9 ns |
6.70 ns |
6.27 ns |
- |
| TryComputeHash · SHA3-256 · OS Native |
1025B |
1,909.8 ns |
9.60 ns |
8.51 ns |
- |
| TryComputeHash · SHA3-256 · AVX2 |
1025B |
2,191.8 ns |
6.26 ns |
5.55 ns |
- |
| TryComputeHash · SHA3-256 · AVX512F |
1025B |
2,278.3 ns |
4.61 ns |
4.31 ns |
- |
| TryComputeHash · SHA3-256 · BouncyCastle |
1025B |
2,465.4 ns |
10.44 ns |
9.77 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-256 · Managed |
8KB |
12,045.7 ns |
53.66 ns |
50.19 ns |
- |
| TryComputeHash · SHA3-256 · OS Native |
8KB |
14,299.9 ns |
59.39 ns |
55.55 ns |
- |
| TryComputeHash · SHA3-256 · AVX2 |
8KB |
16,529.0 ns |
61.12 ns |
57.17 ns |
- |
| TryComputeHash · SHA3-256 · AVX512F |
8KB |
17,086.3 ns |
24.39 ns |
21.62 ns |
- |
| TryComputeHash · SHA3-256 · BouncyCastle |
8KB |
18,518.4 ns |
51.01 ns |
47.71 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-256 · Managed |
128KB |
189,531.8 ns |
831.72 ns |
777.99 ns |
- |
| TryComputeHash · SHA3-256 · OS Native |
128KB |
226,179.4 ns |
770.67 ns |
643.54 ns |
- |
| TryComputeHash · SHA3-256 · AVX2 |
128KB |
261,732.8 ns |
794.16 ns |
742.86 ns |
- |
| TryComputeHash · SHA3-256 · AVX512F |
128KB |
270,652.9 ns |
558.58 ns |
522.50 ns |
- |
| TryComputeHash · SHA3-256 · BouncyCastle |
128KB |
292,516.8 ns |
1,033.31 ns |
916.00 ns |
- |
SHA3-384
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA3-384 · Managed |
128B |
426.9 ns |
2.26 ns |
2.12 ns |
- |
| TryComputeHash · SHA3-384 · OS Native |
128B |
500.4 ns |
2.42 ns |
2.14 ns |
- |
| TryComputeHash · SHA3-384 · AVX2 |
128B |
578.3 ns |
1.62 ns |
1.52 ns |
- |
| TryComputeHash · SHA3-384 · AVX512F |
128B |
594.8 ns |
1.71 ns |
1.51 ns |
- |
| TryComputeHash · SHA3-384 · BouncyCastle |
128B |
624.0 ns |
1.70 ns |
1.59 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-384 · Managed |
137B |
423.5 ns |
2.17 ns |
2.03 ns |
- |
| TryComputeHash · SHA3-384 · OS Native |
137B |
509.9 ns |
2.39 ns |
2.23 ns |
- |
| TryComputeHash · SHA3-384 · AVX2 |
137B |
573.9 ns |
1.65 ns |
1.55 ns |
- |
| TryComputeHash · SHA3-384 · AVX512F |
137B |
590.8 ns |
1.96 ns |
1.84 ns |
- |
| TryComputeHash · SHA3-384 · BouncyCastle |
137B |
627.3 ns |
3.13 ns |
2.77 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-384 · Managed |
1KB |
1,964.1 ns |
8.64 ns |
7.66 ns |
- |
| TryComputeHash · SHA3-384 · OS Native |
1KB |
2,367.2 ns |
5.95 ns |
4.97 ns |
- |
| TryComputeHash · SHA3-384 · AVX2 |
1KB |
2,706.5 ns |
5.90 ns |
5.52 ns |
- |
| TryComputeHash · SHA3-384 · AVX512F |
1KB |
2,775.3 ns |
8.08 ns |
7.56 ns |
- |
| TryComputeHash · SHA3-384 · BouncyCastle |
1KB |
3,042.4 ns |
8.91 ns |
7.44 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-384 · Managed |
1025B |
1,968.4 ns |
7.80 ns |
6.52 ns |
- |
| TryComputeHash · SHA3-384 · OS Native |
1025B |
2,365.9 ns |
9.99 ns |
8.34 ns |
- |
| TryComputeHash · SHA3-384 · AVX2 |
1025B |
2,698.1 ns |
7.54 ns |
5.88 ns |
- |
| TryComputeHash · SHA3-384 · AVX512F |
1025B |
2,775.3 ns |
8.47 ns |
7.92 ns |
- |
| TryComputeHash · SHA3-384 · BouncyCastle |
1025B |
3,049.1 ns |
10.22 ns |
9.56 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-384 · Managed |
8KB |
15,436.4 ns |
64.35 ns |
60.19 ns |
- |
| TryComputeHash · SHA3-384 · OS Native |
8KB |
18,445.2 ns |
120.56 ns |
112.77 ns |
- |
| TryComputeHash · SHA3-384 · AVX2 |
8KB |
21,322.1 ns |
58.38 ns |
54.61 ns |
- |
| TryComputeHash · SHA3-384 · AVX512F |
8KB |
21,829.7 ns |
49.24 ns |
46.06 ns |
- |
| TryComputeHash · SHA3-384 · BouncyCastle |
8KB |
23,753.0 ns |
85.34 ns |
71.26 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-384 · Managed |
128KB |
245,891.6 ns |
1,305.02 ns |
1,220.72 ns |
- |
| TryComputeHash · SHA3-384 · OS Native |
128KB |
293,420.5 ns |
1,306.29 ns |
1,090.81 ns |
- |
| TryComputeHash · SHA3-384 · AVX2 |
128KB |
337,590.9 ns |
911.71 ns |
852.82 ns |
- |
| TryComputeHash · SHA3-384 · AVX512F |
128KB |
348,559.4 ns |
750.71 ns |
702.22 ns |
- |
| TryComputeHash · SHA3-384 · BouncyCastle |
128KB |
378,405.6 ns |
1,033.03 ns |
915.76 ns |
- |
SHA3-512
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA3-512 · Managed |
128B |
402.0 ns |
2.03 ns |
1.90 ns |
- |
| TryComputeHash · SHA3-512 · OS Native |
128B |
508.1 ns |
2.03 ns |
1.70 ns |
- |
| TryComputeHash · SHA3-512 · AVX2 |
128B |
549.3 ns |
1.56 ns |
1.46 ns |
- |
| TryComputeHash · SHA3-512 · AVX512F |
128B |
565.3 ns |
1.66 ns |
1.55 ns |
- |
| TryComputeHash · SHA3-512 · BouncyCastle |
128B |
625.9 ns |
5.15 ns |
4.57 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-512 · Managed |
137B |
400.6 ns |
1.30 ns |
1.21 ns |
- |
| TryComputeHash · SHA3-512 · OS Native |
137B |
502.7 ns |
3.19 ns |
2.98 ns |
- |
| TryComputeHash · SHA3-512 · AVX2 |
137B |
545.4 ns |
1.10 ns |
1.03 ns |
- |
| TryComputeHash · SHA3-512 · AVX512F |
137B |
563.8 ns |
1.52 ns |
1.42 ns |
- |
| TryComputeHash · SHA3-512 · BouncyCastle |
137B |
624.7 ns |
2.23 ns |
1.97 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-512 · Managed |
1KB |
2,929.5 ns |
9.12 ns |
7.61 ns |
- |
| TryComputeHash · SHA3-512 · OS Native |
1KB |
3,519.9 ns |
18.26 ns |
17.08 ns |
- |
| TryComputeHash · SHA3-512 · AVX2 |
1KB |
4,023.6 ns |
9.42 ns |
8.35 ns |
- |
| TryComputeHash · SHA3-512 · AVX512F |
1KB |
4,151.4 ns |
12.26 ns |
11.47 ns |
- |
| TryComputeHash · SHA3-512 · BouncyCastle |
1KB |
4,496.8 ns |
21.77 ns |
19.30 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-512 · Managed |
1025B |
2,932.0 ns |
11.60 ns |
10.28 ns |
- |
| TryComputeHash · SHA3-512 · OS Native |
1025B |
3,514.2 ns |
22.02 ns |
20.60 ns |
- |
| TryComputeHash · SHA3-512 · AVX2 |
1025B |
4,036.2 ns |
11.24 ns |
10.51 ns |
- |
| TryComputeHash · SHA3-512 · AVX512F |
1025B |
4,151.0 ns |
9.89 ns |
9.25 ns |
- |
| TryComputeHash · SHA3-512 · BouncyCastle |
1025B |
4,495.4 ns |
26.49 ns |
24.78 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-512 · Managed |
8KB |
22,100.6 ns |
137.03 ns |
128.18 ns |
- |
| TryComputeHash · SHA3-512 · OS Native |
8KB |
26,472.7 ns |
130.16 ns |
121.75 ns |
- |
| TryComputeHash · SHA3-512 · AVX2 |
8KB |
30,487.9 ns |
39.67 ns |
37.11 ns |
- |
| TryComputeHash · SHA3-512 · AVX512F |
8KB |
31,315.5 ns |
54.82 ns |
51.28 ns |
- |
| TryComputeHash · SHA3-512 · BouncyCastle |
8KB |
34,251.3 ns |
145.04 ns |
135.67 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-512 · Managed |
128KB |
352,819.9 ns |
1,937.21 ns |
1,717.29 ns |
- |
| TryComputeHash · SHA3-512 · OS Native |
128KB |
420,227.6 ns |
2,276.89 ns |
2,129.80 ns |
- |
| TryComputeHash · SHA3-512 · AVX2 |
128KB |
486,894.1 ns |
815.49 ns |
762.81 ns |
- |
| TryComputeHash · SHA3-512 · AVX512F |
128KB |
501,264.3 ns |
2,018.41 ns |
1,888.02 ns |
- |
| TryComputeHash · SHA3-512 · BouncyCastle |
128KB |
559,765.9 ns |
2,256.90 ns |
2,000.68 ns |
- |
Keccak Family
Keccak-256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Keccak-256 · Managed |
128B |
209.6 ns |
0.47 ns |
0.41 ns |
- |
| TryComputeHash · Keccak-256 · AVX2 |
128B |
280.6 ns |
0.63 ns |
0.59 ns |
- |
| TryComputeHash · Keccak-256 · AVX512F |
128B |
291.3 ns |
0.91 ns |
0.85 ns |
- |
| TryComputeHash · Keccak-256 · BouncyCastle |
128B |
330.6 ns |
1.21 ns |
1.01 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-256 · Managed |
137B |
450.5 ns |
1.77 ns |
1.65 ns |
- |
| TryComputeHash · Keccak-256 · AVX2 |
137B |
599.2 ns |
2.09 ns |
1.95 ns |
- |
| TryComputeHash · Keccak-256 · AVX512F |
137B |
618.0 ns |
1.62 ns |
1.44 ns |
- |
| TryComputeHash · Keccak-256 · BouncyCastle |
137B |
627.8 ns |
2.70 ns |
2.52 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-256 · Managed |
1KB |
1,603.2 ns |
3.09 ns |
2.58 ns |
- |
| TryComputeHash · Keccak-256 · AVX2 |
1KB |
2,187.7 ns |
6.83 ns |
6.39 ns |
- |
| TryComputeHash · Keccak-256 · AVX512F |
1KB |
2,280.9 ns |
6.47 ns |
6.05 ns |
- |
| TryComputeHash · Keccak-256 · BouncyCastle |
1KB |
2,452.6 ns |
7.81 ns |
7.31 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-256 · Managed |
1025B |
1,603.6 ns |
9.09 ns |
8.51 ns |
- |
| TryComputeHash · Keccak-256 · AVX2 |
1025B |
2,188.2 ns |
6.32 ns |
5.91 ns |
- |
| TryComputeHash · Keccak-256 · AVX512F |
1025B |
2,275.6 ns |
5.25 ns |
4.91 ns |
- |
| TryComputeHash · Keccak-256 · BouncyCastle |
1025B |
2,456.8 ns |
9.22 ns |
8.17 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-256 · Managed |
8KB |
12,068.1 ns |
29.65 ns |
24.76 ns |
- |
| TryComputeHash · Keccak-256 · AVX2 |
8KB |
16,474.6 ns |
43.59 ns |
38.64 ns |
- |
| TryComputeHash · Keccak-256 · AVX512F |
8KB |
17,112.5 ns |
35.77 ns |
29.87 ns |
- |
| TryComputeHash · Keccak-256 · BouncyCastle |
8KB |
18,558.5 ns |
56.69 ns |
50.26 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-256 · Managed |
128KB |
189,304.2 ns |
471.95 ns |
368.47 ns |
- |
| TryComputeHash · Keccak-256 · AVX2 |
128KB |
260,115.2 ns |
716.76 ns |
635.39 ns |
- |
| TryComputeHash · Keccak-256 · AVX512F |
128KB |
270,612.5 ns |
1,132.29 ns |
1,059.14 ns |
- |
| TryComputeHash · Keccak-256 · BouncyCastle |
128KB |
292,417.8 ns |
931.83 ns |
778.12 ns |
- |
Keccak-384
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Keccak-384 · Managed |
128B |
427.2 ns |
1.25 ns |
1.11 ns |
- |
| TryComputeHash · Keccak-384 · AVX2 |
128B |
579.3 ns |
2.15 ns |
1.91 ns |
- |
| TryComputeHash · Keccak-384 · AVX512F |
128B |
596.4 ns |
1.72 ns |
1.53 ns |
- |
| TryComputeHash · Keccak-384 · BouncyCastle |
128B |
622.4 ns |
1.59 ns |
1.24 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-384 · Managed |
137B |
423.5 ns |
1.15 ns |
0.96 ns |
- |
| TryComputeHash · Keccak-384 · AVX2 |
137B |
579.5 ns |
1.31 ns |
1.23 ns |
- |
| TryComputeHash · Keccak-384 · AVX512F |
137B |
592.1 ns |
1.38 ns |
1.29 ns |
- |
| TryComputeHash · Keccak-384 · BouncyCastle |
137B |
624.8 ns |
2.31 ns |
1.93 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-384 · Managed |
1KB |
1,966.5 ns |
12.97 ns |
12.14 ns |
- |
| TryComputeHash · Keccak-384 · AVX2 |
1KB |
2,706.6 ns |
6.45 ns |
6.03 ns |
- |
| TryComputeHash · Keccak-384 · AVX512F |
1KB |
2,780.6 ns |
8.18 ns |
7.65 ns |
- |
| TryComputeHash · Keccak-384 · BouncyCastle |
1KB |
3,067.9 ns |
12.27 ns |
11.48 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-384 · Managed |
1025B |
1,969.1 ns |
7.49 ns |
7.01 ns |
- |
| TryComputeHash · Keccak-384 · AVX2 |
1025B |
2,698.2 ns |
3.58 ns |
3.18 ns |
- |
| TryComputeHash · Keccak-384 · AVX512F |
1025B |
2,777.3 ns |
3.40 ns |
3.18 ns |
- |
| TryComputeHash · Keccak-384 · BouncyCastle |
1025B |
3,038.3 ns |
5.97 ns |
4.98 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-384 · Managed |
8KB |
15,424.2 ns |
57.98 ns |
54.24 ns |
- |
| TryComputeHash · Keccak-384 · AVX2 |
8KB |
21,243.9 ns |
46.84 ns |
43.81 ns |
- |
| TryComputeHash · Keccak-384 · AVX512F |
8KB |
21,837.4 ns |
65.96 ns |
58.47 ns |
- |
| TryComputeHash · Keccak-384 · BouncyCastle |
8KB |
23,770.6 ns |
49.33 ns |
43.73 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-384 · Managed |
128KB |
246,315.5 ns |
2,286.23 ns |
2,026.68 ns |
- |
| TryComputeHash · Keccak-384 · AVX2 |
128KB |
337,710.0 ns |
573.88 ns |
536.81 ns |
- |
| TryComputeHash · Keccak-384 · AVX512F |
128KB |
348,988.1 ns |
647.17 ns |
573.70 ns |
- |
| TryComputeHash · Keccak-384 · BouncyCastle |
128KB |
379,818.2 ns |
800.01 ns |
709.19 ns |
- |
Keccak-512
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Keccak-512 · Managed |
128B |
402.4 ns |
1.96 ns |
1.84 ns |
- |
| TryComputeHash · Keccak-512 · AVX2 |
128B |
549.6 ns |
0.94 ns |
0.88 ns |
- |
| TryComputeHash · Keccak-512 · AVX512F |
128B |
566.7 ns |
1.54 ns |
1.44 ns |
- |
| TryComputeHash · Keccak-512 · BouncyCastle |
128B |
625.9 ns |
2.26 ns |
2.12 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-512 · Managed |
137B |
399.1 ns |
1.11 ns |
0.99 ns |
- |
| TryComputeHash · Keccak-512 · AVX2 |
137B |
545.8 ns |
1.67 ns |
1.56 ns |
- |
| TryComputeHash · Keccak-512 · AVX512F |
137B |
568.2 ns |
1.27 ns |
1.12 ns |
- |
| TryComputeHash · Keccak-512 · BouncyCastle |
137B |
624.9 ns |
2.09 ns |
1.86 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-512 · Managed |
1KB |
2,936.7 ns |
12.89 ns |
12.06 ns |
- |
| TryComputeHash · Keccak-512 · AVX2 |
1KB |
4,029.4 ns |
13.89 ns |
11.60 ns |
- |
| TryComputeHash · Keccak-512 · AVX512F |
1KB |
4,154.9 ns |
14.25 ns |
12.63 ns |
- |
| TryComputeHash · Keccak-512 · BouncyCastle |
1KB |
4,509.7 ns |
6.93 ns |
5.41 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-512 · Managed |
1025B |
2,937.1 ns |
16.07 ns |
15.03 ns |
- |
| TryComputeHash · Keccak-512 · AVX2 |
1025B |
4,040.1 ns |
12.55 ns |
11.74 ns |
- |
| TryComputeHash · Keccak-512 · AVX512F |
1025B |
4,160.6 ns |
13.79 ns |
12.90 ns |
- |
| TryComputeHash · Keccak-512 · BouncyCastle |
1025B |
4,499.2 ns |
18.01 ns |
15.97 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-512 · Managed |
8KB |
22,091.8 ns |
103.18 ns |
91.46 ns |
- |
| TryComputeHash · Keccak-512 · AVX2 |
8KB |
30,444.7 ns |
52.96 ns |
49.54 ns |
- |
| TryComputeHash · Keccak-512 · AVX512F |
8KB |
31,330.5 ns |
63.21 ns |
59.12 ns |
- |
| TryComputeHash · Keccak-512 · BouncyCastle |
8KB |
34,086.9 ns |
99.24 ns |
82.87 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-512 · Managed |
128KB |
353,099.0 ns |
1,907.87 ns |
1,784.63 ns |
- |
| TryComputeHash · Keccak-512 · AVX2 |
128KB |
485,847.9 ns |
574.51 ns |
509.29 ns |
- |
| TryComputeHash · Keccak-512 · AVX512F |
128KB |
500,355.1 ns |
1,233.11 ns |
1,153.45 ns |
- |
| TryComputeHash · Keccak-512 · BouncyCastle |
128KB |
553,680.8 ns |
2,674.98 ns |
2,371.30 ns |
- |
SHAKE Family
SHAKE128
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHAKE128 · Managed |
128B |
242.2 ns |
0.85 ns |
0.71 ns |
- |
| TryComputeHash · SHAKE128 · AVX2 |
128B |
316.2 ns |
0.92 ns |
0.86 ns |
- |
| TryComputeHash · SHAKE128 · AVX512F |
128B |
323.9 ns |
0.63 ns |
0.59 ns |
- |
| TryComputeHash · SHAKE128 · BouncyCastle |
128B |
331.1 ns |
0.96 ns |
0.90 ns |
- |
| TryComputeHash · SHAKE128 · OS Native |
128B |
353.8 ns |
0.86 ns |
0.72 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE128 · Managed |
137B |
241.0 ns |
1.74 ns |
1.63 ns |
- |
| TryComputeHash · SHAKE128 · AVX2 |
137B |
313.3 ns |
1.01 ns |
0.95 ns |
- |
| TryComputeHash · SHAKE128 · AVX512F |
137B |
320.5 ns |
0.58 ns |
0.51 ns |
- |
| TryComputeHash · SHAKE128 · BouncyCastle |
137B |
331.6 ns |
0.84 ns |
0.75 ns |
- |
| TryComputeHash · SHAKE128 · OS Native |
137B |
355.2 ns |
1.28 ns |
1.20 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE128 · Managed |
1KB |
1,470.3 ns |
8.81 ns |
8.24 ns |
- |
| TryComputeHash · SHAKE128 · OS Native |
1KB |
1,768.1 ns |
9.11 ns |
7.61 ns |
- |
| TryComputeHash · SHAKE128 · AVX2 |
1KB |
1,985.3 ns |
8.25 ns |
7.31 ns |
- |
| TryComputeHash · SHAKE128 · AVX512F |
1KB |
2,048.5 ns |
5.70 ns |
5.33 ns |
- |
| TryComputeHash · SHAKE128 · BouncyCastle |
1KB |
2,160.5 ns |
6.27 ns |
5.55 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE128 · Managed |
1025B |
1,469.0 ns |
4.37 ns |
3.87 ns |
- |
| TryComputeHash · SHAKE128 · OS Native |
1025B |
1,765.2 ns |
4.26 ns |
3.99 ns |
- |
| TryComputeHash · SHAKE128 · AVX2 |
1025B |
1,984.3 ns |
4.49 ns |
3.98 ns |
- |
| TryComputeHash · SHAKE128 · AVX512F |
1025B |
2,051.2 ns |
4.02 ns |
3.57 ns |
- |
| TryComputeHash · SHAKE128 · BouncyCastle |
1025B |
2,163.8 ns |
9.86 ns |
8.74 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE128 · Managed |
8KB |
9,751.8 ns |
42.73 ns |
37.88 ns |
- |
| TryComputeHash · SHAKE128 · OS Native |
8KB |
11,727.2 ns |
70.74 ns |
62.71 ns |
- |
| TryComputeHash · SHAKE128 · AVX2 |
8KB |
13,318.4 ns |
26.75 ns |
25.02 ns |
- |
| TryComputeHash · SHAKE128 · AVX512F |
8KB |
13,786.4 ns |
17.17 ns |
15.22 ns |
- |
| TryComputeHash · SHAKE128 · BouncyCastle |
8KB |
15,047.9 ns |
49.30 ns |
46.11 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE128 · Managed |
128KB |
154,600.7 ns |
538.23 ns |
477.13 ns |
- |
| TryComputeHash · SHAKE128 · OS Native |
128KB |
184,772.8 ns |
1,558.66 ns |
1,457.98 ns |
- |
| TryComputeHash · SHAKE128 · AVX2 |
128KB |
211,494.2 ns |
268.90 ns |
238.37 ns |
- |
| TryComputeHash · SHAKE128 · AVX512F |
128KB |
218,372.0 ns |
388.23 ns |
363.15 ns |
- |
| TryComputeHash · SHAKE128 · BouncyCastle |
128KB |
238,364.1 ns |
688.62 ns |
644.14 ns |
- |
SHAKE256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHAKE256 · Managed |
128B |
250.0 ns |
1.18 ns |
1.05 ns |
- |
| TryComputeHash · SHAKE256 · AVX2 |
128B |
324.9 ns |
0.69 ns |
0.64 ns |
- |
| TryComputeHash · SHAKE256 · BouncyCastle |
128B |
331.2 ns |
1.71 ns |
1.60 ns |
- |
| TryComputeHash · SHAKE256 · AVX512F |
128B |
333.0 ns |
0.80 ns |
0.71 ns |
- |
| TryComputeHash · SHAKE256 · OS Native |
128B |
352.5 ns |
1.87 ns |
1.75 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE256 · Managed |
137B |
490.8 ns |
2.18 ns |
2.04 ns |
- |
| TryComputeHash · SHAKE256 · OS Native |
137B |
583.9 ns |
2.07 ns |
1.73 ns |
- |
| TryComputeHash · SHAKE256 · BouncyCastle |
137B |
629.2 ns |
2.77 ns |
2.59 ns |
- |
| TryComputeHash · SHAKE256 · AVX2 |
137B |
641.6 ns |
2.42 ns |
2.26 ns |
- |
| TryComputeHash · SHAKE256 · AVX512F |
137B |
659.1 ns |
1.79 ns |
1.67 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE256 · Managed |
1KB |
1,644.5 ns |
6.84 ns |
6.40 ns |
- |
| TryComputeHash · SHAKE256 · OS Native |
1KB |
1,995.6 ns |
7.25 ns |
6.43 ns |
- |
| TryComputeHash · SHAKE256 · AVX2 |
1KB |
2,225.3 ns |
3.80 ns |
3.37 ns |
- |
| TryComputeHash · SHAKE256 · AVX512F |
1KB |
2,324.8 ns |
5.71 ns |
5.06 ns |
- |
| TryComputeHash · SHAKE256 · BouncyCastle |
1KB |
2,460.1 ns |
9.68 ns |
9.05 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE256 · Managed |
1025B |
1,639.1 ns |
3.78 ns |
3.53 ns |
- |
| TryComputeHash · SHAKE256 · OS Native |
1025B |
2,000.1 ns |
12.67 ns |
11.24 ns |
- |
| TryComputeHash · SHAKE256 · AVX2 |
1025B |
2,225.6 ns |
9.82 ns |
9.18 ns |
- |
| TryComputeHash · SHAKE256 · AVX512F |
1025B |
2,324.4 ns |
9.18 ns |
8.59 ns |
- |
| TryComputeHash · SHAKE256 · BouncyCastle |
1025B |
2,459.1 ns |
10.70 ns |
10.01 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE256 · Managed |
8KB |
12,136.0 ns |
80.99 ns |
75.76 ns |
- |
| TryComputeHash · SHAKE256 · OS Native |
8KB |
14,395.7 ns |
53.46 ns |
50.01 ns |
- |
| TryComputeHash · SHAKE256 · AVX2 |
8KB |
16,526.7 ns |
61.52 ns |
57.55 ns |
- |
| TryComputeHash · SHAKE256 · AVX512F |
8KB |
17,242.2 ns |
31.10 ns |
29.09 ns |
- |
| TryComputeHash · SHAKE256 · BouncyCastle |
8KB |
18,505.7 ns |
66.80 ns |
62.48 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE256 · Managed |
128KB |
189,786.5 ns |
576.15 ns |
510.74 ns |
- |
| TryComputeHash · SHAKE256 · OS Native |
128KB |
226,152.7 ns |
968.64 ns |
906.07 ns |
- |
| TryComputeHash · SHAKE256 · AVX2 |
128KB |
259,879.5 ns |
854.69 ns |
799.48 ns |
- |
| TryComputeHash · SHAKE256 · AVX512F |
128KB |
270,569.7 ns |
852.96 ns |
797.86 ns |
- |
| TryComputeHash · SHAKE256 · BouncyCastle |
128KB |
291,624.5 ns |
755.72 ns |
631.06 ns |
- |
cSHAKE Family
cSHAKE128
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · cSHAKE128 · Managed |
128B |
257.6 ns |
5.07 ns |
6.94 ns |
- |
| TryComputeHash · cSHAKE128 · AVX2 |
128B |
328.2 ns |
5.12 ns |
4.79 ns |
- |
| TryComputeHash · cSHAKE128 · AVX512F |
128B |
336.4 ns |
6.59 ns |
6.16 ns |
- |
| TryComputeHash · cSHAKE128 · BouncyCastle |
128B |
346.5 ns |
6.67 ns |
6.24 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE128 · Managed |
137B |
256.5 ns |
5.08 ns |
6.95 ns |
- |
| TryComputeHash · cSHAKE128 · AVX2 |
137B |
326.4 ns |
6.43 ns |
7.40 ns |
- |
| TryComputeHash · cSHAKE128 · AVX512F |
137B |
332.0 ns |
5.15 ns |
4.81 ns |
- |
| TryComputeHash · cSHAKE128 · BouncyCastle |
137B |
348.1 ns |
6.74 ns |
7.21 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE128 · Managed |
1KB |
1,556.4 ns |
29.02 ns |
27.15 ns |
- |
| TryComputeHash · cSHAKE128 · AVX2 |
1KB |
2,023.8 ns |
30.77 ns |
27.28 ns |
- |
| TryComputeHash · cSHAKE128 · AVX512F |
1KB |
2,089.4 ns |
41.56 ns |
46.19 ns |
- |
| TryComputeHash · cSHAKE128 · BouncyCastle |
1KB |
2,233.7 ns |
44.49 ns |
57.86 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE128 · Managed |
1025B |
1,548.1 ns |
30.79 ns |
40.03 ns |
- |
| TryComputeHash · cSHAKE128 · AVX2 |
1025B |
2,025.4 ns |
29.48 ns |
28.95 ns |
- |
| TryComputeHash · cSHAKE128 · AVX512F |
1025B |
2,064.7 ns |
16.17 ns |
13.50 ns |
- |
| TryComputeHash · cSHAKE128 · BouncyCastle |
1025B |
2,231.9 ns |
43.26 ns |
38.35 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE128 · Managed |
8KB |
10,300.2 ns |
204.19 ns |
235.15 ns |
- |
| TryComputeHash · cSHAKE128 · AVX2 |
8KB |
13,515.4 ns |
148.16 ns |
138.59 ns |
- |
| TryComputeHash · cSHAKE128 · AVX512F |
8KB |
13,864.5 ns |
85.53 ns |
71.42 ns |
- |
| TryComputeHash · cSHAKE128 · BouncyCastle |
8KB |
15,915.0 ns |
287.61 ns |
307.74 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE128 · Managed |
128KB |
162,801.0 ns |
3,213.21 ns |
4,809.38 ns |
- |
| TryComputeHash · cSHAKE128 · AVX2 |
128KB |
214,898.5 ns |
2,345.07 ns |
1,958.24 ns |
- |
| TryComputeHash · cSHAKE128 · AVX512F |
128KB |
219,509.7 ns |
951.92 ns |
743.20 ns |
- |
| TryComputeHash · cSHAKE128 · BouncyCastle |
128KB |
249,286.3 ns |
4,833.24 ns |
5,171.52 ns |
- |
cSHAKE256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · cSHAKE256 · Managed |
128B |
253.9 ns |
1.49 ns |
1.39 ns |
- |
| TryComputeHash · cSHAKE256 · AVX2 |
128B |
326.5 ns |
0.63 ns |
0.59 ns |
- |
| TryComputeHash · cSHAKE256 · BouncyCastle |
128B |
332.4 ns |
1.41 ns |
1.32 ns |
- |
| TryComputeHash · cSHAKE256 · AVX512F |
128B |
334.5 ns |
0.80 ns |
0.75 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE256 · Managed |
137B |
501.0 ns |
1.52 ns |
1.34 ns |
- |
| TryComputeHash · cSHAKE256 · BouncyCastle |
137B |
630.3 ns |
2.25 ns |
2.10 ns |
- |
| TryComputeHash · cSHAKE256 · AVX2 |
137B |
645.3 ns |
2.19 ns |
1.94 ns |
- |
| TryComputeHash · cSHAKE256 · AVX512F |
137B |
661.3 ns |
2.25 ns |
2.11 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE256 · Managed |
1KB |
1,658.1 ns |
5.28 ns |
4.94 ns |
- |
| TryComputeHash · cSHAKE256 · AVX2 |
1KB |
2,238.2 ns |
7.01 ns |
6.56 ns |
- |
| TryComputeHash · cSHAKE256 · AVX512F |
1KB |
2,325.7 ns |
4.90 ns |
4.34 ns |
- |
| TryComputeHash · cSHAKE256 · BouncyCastle |
1KB |
2,464.9 ns |
5.69 ns |
5.32 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE256 · Managed |
1025B |
1,653.3 ns |
8.19 ns |
7.66 ns |
- |
| TryComputeHash · cSHAKE256 · AVX2 |
1025B |
2,237.0 ns |
5.48 ns |
4.86 ns |
- |
| TryComputeHash · cSHAKE256 · AVX512F |
1025B |
2,333.7 ns |
6.06 ns |
5.67 ns |
- |
| TryComputeHash · cSHAKE256 · BouncyCastle |
1025B |
2,453.7 ns |
4.52 ns |
3.78 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE256 · Managed |
8KB |
12,241.1 ns |
132.24 ns |
110.43 ns |
- |
| TryComputeHash · cSHAKE256 · AVX2 |
8KB |
16,575.0 ns |
43.03 ns |
40.25 ns |
- |
| TryComputeHash · cSHAKE256 · AVX512F |
8KB |
17,241.0 ns |
49.78 ns |
46.56 ns |
- |
| TryComputeHash · cSHAKE256 · BouncyCastle |
8KB |
18,537.4 ns |
72.34 ns |
64.13 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE256 · Managed |
128KB |
189,916.8 ns |
398.58 ns |
332.84 ns |
- |
| TryComputeHash · cSHAKE256 · AVX2 |
128KB |
259,795.3 ns |
1,014.98 ns |
949.41 ns |
- |
| TryComputeHash · cSHAKE256 · AVX512F |
128KB |
271,097.8 ns |
859.74 ns |
762.14 ns |
- |
| TryComputeHash · cSHAKE256 · BouncyCastle |
128KB |
292,560.7 ns |
356.06 ns |
297.33 ns |
- |
KangarooTwelve Family
KT128
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · KT128 · Managed |
128B |
158.1 ns |
1.05 ns |
0.98 ns |
- |
| TryComputeHash · KT128 · AVX2 |
128B |
183.2 ns |
0.64 ns |
0.60 ns |
- |
| TryComputeHash · KT128 · AVX512F |
128B |
190.1 ns |
0.83 ns |
0.78 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT128 · Managed |
137B |
154.8 ns |
0.73 ns |
0.68 ns |
- |
| TryComputeHash · KT128 · AVX2 |
137B |
180.3 ns |
0.18 ns |
0.15 ns |
- |
| TryComputeHash · KT128 · AVX512F |
137B |
184.8 ns |
0.43 ns |
0.38 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT128 · Managed |
1KB |
851.0 ns |
3.69 ns |
3.45 ns |
- |
| TryComputeHash · KT128 · AVX2 |
1KB |
1,101.1 ns |
2.97 ns |
2.78 ns |
- |
| TryComputeHash · KT128 · AVX512F |
1KB |
1,139.9 ns |
2.90 ns |
2.72 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT128 · Managed |
1025B |
874.6 ns |
4.54 ns |
4.25 ns |
- |
| TryComputeHash · KT128 · AVX2 |
1025B |
1,093.0 ns |
3.42 ns |
3.20 ns |
- |
| TryComputeHash · KT128 · AVX512F |
1025B |
1,149.8 ns |
3.52 ns |
2.94 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT128 · Managed |
8KB |
5,898.1 ns |
12.50 ns |
11.08 ns |
- |
| TryComputeHash · KT128 · AVX512F |
8KB |
8,077.4 ns |
27.74 ns |
25.95 ns |
- |
| TryComputeHash · KT128 · AVX2 |
8KB |
9,597.5 ns |
16.66 ns |
14.77 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT128 · Managed |
128KB |
89,215.0 ns |
392.62 ns |
348.05 ns |
- |
| TryComputeHash · KT128 · AVX2 |
128KB |
116,323.9 ns |
162.79 ns |
152.27 ns |
- |
| TryComputeHash · KT128 · AVX512F |
128KB |
122,323.6 ns |
382.08 ns |
357.40 ns |
- |
KT256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · KT256 · Managed |
128B |
166.7 ns |
1.10 ns |
1.02 ns |
- |
| TryComputeHash · KT256 · AVX512F |
128B |
196.8 ns |
0.40 ns |
0.38 ns |
- |
| TryComputeHash · KT256 · AVX2 |
128B |
199.1 ns |
0.52 ns |
0.49 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT256 · Managed |
137B |
317.1 ns |
0.46 ns |
0.39 ns |
- |
| TryComputeHash · KT256 · AVX2 |
137B |
371.3 ns |
1.17 ns |
1.09 ns |
- |
| TryComputeHash · KT256 · AVX512F |
137B |
383.1 ns |
1.14 ns |
1.07 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT256 · Managed |
1KB |
936.7 ns |
3.04 ns |
2.84 ns |
- |
| TryComputeHash · KT256 · AVX2 |
1KB |
1,214.0 ns |
2.64 ns |
2.47 ns |
- |
| TryComputeHash · KT256 · AVX512F |
1KB |
1,272.8 ns |
2.26 ns |
1.88 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT256 · Managed |
1025B |
936.3 ns |
4.15 ns |
3.67 ns |
- |
| TryComputeHash · KT256 · AVX2 |
1025B |
1,214.7 ns |
4.50 ns |
4.21 ns |
- |
| TryComputeHash · KT256 · AVX512F |
1025B |
1,269.7 ns |
3.28 ns |
3.07 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT256 · Managed |
8KB |
6,972.7 ns |
28.44 ns |
25.21 ns |
- |
| TryComputeHash · KT256 · AVX2 |
8KB |
9,111.6 ns |
30.34 ns |
28.38 ns |
- |
| TryComputeHash · KT256 · AVX512F |
8KB |
9,554.2 ns |
28.85 ns |
25.57 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT256 · Managed |
128KB |
109,262.2 ns |
318.12 ns |
297.57 ns |
- |
| TryComputeHash · KT256 · AVX2 |
128KB |
143,710.0 ns |
288.33 ns |
269.70 ns |
- |
| TryComputeHash · KT256 · AVX512F |
128KB |
151,698.4 ns |
413.55 ns |
366.61 ns |
- |
TurboSHAKE Family
TurboSHAKE128
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · TurboSHAKE128-32 · Managed |
128B |
152.9 ns |
0.54 ns |
0.45 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX2 |
128B |
179.6 ns |
0.58 ns |
0.55 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX512F |
128B |
183.8 ns |
0.45 ns |
0.42 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-32 · Managed |
137B |
151.1 ns |
0.58 ns |
0.52 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX2 |
137B |
179.3 ns |
0.87 ns |
0.81 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX512F |
137B |
181.0 ns |
0.27 ns |
0.25 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-32 · Managed |
1KB |
836.3 ns |
3.34 ns |
3.12 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX2 |
1KB |
1,081.2 ns |
4.23 ns |
3.96 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX512F |
1KB |
1,127.3 ns |
3.86 ns |
3.61 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-32 · Managed |
1025B |
838.2 ns |
4.13 ns |
3.87 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX2 |
1025B |
1,080.4 ns |
3.88 ns |
3.63 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX512F |
1025B |
1,131.9 ns |
3.78 ns |
3.35 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-32 · Managed |
8KB |
5,300.1 ns |
20.54 ns |
17.15 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX2 |
8KB |
6,973.4 ns |
9.20 ns |
7.68 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX512F |
8KB |
7,322.5 ns |
10.40 ns |
9.73 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-32 · Managed |
128KB |
84,326.7 ns |
541.44 ns |
479.97 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX2 |
128KB |
110,936.0 ns |
283.17 ns |
264.87 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX512F |
128KB |
117,818.0 ns |
207.08 ns |
193.71 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-64 · Managed |
128B |
173.3 ns |
0.61 ns |
0.54 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX2 |
128B |
199.4 ns |
0.52 ns |
0.49 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX512F |
128B |
204.0 ns |
0.85 ns |
0.80 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-64 · Managed |
137B |
170.6 ns |
0.59 ns |
0.52 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX2 |
137B |
196.2 ns |
0.54 ns |
0.51 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX512F |
137B |
201.9 ns |
0.59 ns |
0.56 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-64 · Managed |
1KB |
857.8 ns |
3.37 ns |
3.15 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX2 |
1KB |
1,099.8 ns |
2.02 ns |
1.69 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX512F |
1KB |
1,148.5 ns |
3.49 ns |
3.09 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-64 · Managed |
1025B |
858.5 ns |
3.47 ns |
3.07 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX2 |
1025B |
1,101.1 ns |
3.63 ns |
3.39 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX512F |
1025B |
1,171.8 ns |
3.04 ns |
2.84 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-64 · Managed |
8KB |
5,327.8 ns |
18.23 ns |
16.16 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX2 |
8KB |
7,018.7 ns |
13.11 ns |
12.26 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX512F |
8KB |
7,339.8 ns |
11.86 ns |
11.09 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-64 · Managed |
128KB |
84,230.5 ns |
525.58 ns |
491.63 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX2 |
128KB |
110,918.1 ns |
275.68 ns |
215.23 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX512F |
128KB |
117,827.9 ns |
201.75 ns |
178.84 ns |
- |
TurboSHAKE256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · TurboSHAKE256 · Managed |
128B |
161.2 ns |
0.70 ns |
0.62 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX2 |
128B |
188.6 ns |
0.50 ns |
0.46 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX512F |
128B |
194.2 ns |
0.37 ns |
0.34 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE256 · Managed |
137B |
309.6 ns |
0.98 ns |
0.82 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX2 |
137B |
365.9 ns |
1.14 ns |
1.01 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX512F |
137B |
376.5 ns |
0.40 ns |
0.31 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE256 · Managed |
1KB |
919.7 ns |
2.81 ns |
2.62 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX2 |
1KB |
1,192.4 ns |
2.74 ns |
2.56 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX512F |
1KB |
1,260.5 ns |
2.00 ns |
1.87 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE256 · Managed |
1025B |
920.8 ns |
2.55 ns |
2.39 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX2 |
1025B |
1,201.0 ns |
3.81 ns |
3.56 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX512F |
1025B |
1,259.6 ns |
3.46 ns |
3.06 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE256 · Managed |
8KB |
6,582.2 ns |
19.69 ns |
17.45 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX2 |
8KB |
8,677.5 ns |
20.60 ns |
19.27 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX512F |
8KB |
9,131.7 ns |
19.32 ns |
17.12 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE256 · Managed |
128KB |
102,694.7 ns |
484.86 ns |
453.54 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX2 |
128KB |
135,525.7 ns |
261.62 ns |
204.25 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX512F |
128KB |
142,204.0 ns |
251.94 ns |
235.66 ns |
- |
BLAKE2 Family
BouncyCastle leads the BLAKE2 benchmarks due to highly optimized native code. The managed AVX2/SSSE3/SSE2 SIMD implementations are competitive (within ~15% of BouncyCastle), while the scalar fallback is significantly slower (~3.5× for BLAKE2b, ~4× for BLAKE2s).
Key observations:
- BouncyCastle (102 ns @ 128B for BLAKE2b-256): Highly optimized reference
- Managed AVX2 (117 ns @ 128B): Competitive SIMD implementation
- Managed scalar (371 ns @ 128B): Fallback for non-SIMD platforms
BLAKE2b-256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · BLAKE2b-256 · BouncyCastle |
128B |
99.60 ns |
0.622 ns |
0.582 ns |
- |
| TryComputeHash · BLAKE2b-256 · AVX2 |
128B |
119.96 ns |
2.218 ns |
2.179 ns |
- |
| TryComputeHash · BLAKE2b-256 · Managed |
128B |
370.40 ns |
2.608 ns |
2.312 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-256 · BouncyCastle |
137B |
189.67 ns |
0.822 ns |
0.729 ns |
- |
| TryComputeHash · BLAKE2b-256 · AVX2 |
137B |
210.14 ns |
1.379 ns |
1.290 ns |
- |
| TryComputeHash · BLAKE2b-256 · Managed |
137B |
724.00 ns |
4.439 ns |
3.935 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-256 · BouncyCastle |
1KB |
715.98 ns |
4.807 ns |
4.261 ns |
- |
| TryComputeHash · BLAKE2b-256 · AVX2 |
1KB |
796.95 ns |
7.405 ns |
6.565 ns |
- |
| TryComputeHash · BLAKE2b-256 · Managed |
1KB |
2,849.76 ns |
14.322 ns |
12.696 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-256 · BouncyCastle |
1025B |
807.91 ns |
3.485 ns |
3.089 ns |
- |
| TryComputeHash · BLAKE2b-256 · AVX2 |
1025B |
900.86 ns |
12.477 ns |
11.671 ns |
- |
| TryComputeHash · BLAKE2b-256 · Managed |
1025B |
3,196.15 ns |
20.950 ns |
19.597 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-256 · BouncyCastle |
8KB |
5,614.11 ns |
33.398 ns |
31.240 ns |
- |
| TryComputeHash · BLAKE2b-256 · AVX2 |
8KB |
6,331.31 ns |
84.972 ns |
75.326 ns |
- |
| TryComputeHash · BLAKE2b-256 · Managed |
8KB |
22,838.37 ns |
134.214 ns |
125.544 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-256 · AVX2 |
128KB |
101,277.89 ns |
1,017.042 ns |
901.581 ns |
- |
| TryComputeHash · BLAKE2b-256 · BouncyCastle |
128KB |
105,416.37 ns |
1,552.811 ns |
1,452.501 ns |
- |
| TryComputeHash · BLAKE2b-256 · Managed |
128KB |
368,544.80 ns |
3,821.455 ns |
3,574.592 ns |
- |
BLAKE2b-512
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · BLAKE2b-512 · BouncyCastle |
128B |
101.2 ns |
0.40 ns |
0.37 ns |
- |
| TryComputeHash · BLAKE2b-512 · AVX2 |
128B |
121.2 ns |
0.98 ns |
0.92 ns |
- |
| TryComputeHash · BLAKE2b-512 · Managed |
128B |
378.8 ns |
2.76 ns |
2.58 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-512 · BouncyCastle |
137B |
184.2 ns |
2.19 ns |
2.05 ns |
- |
| TryComputeHash · BLAKE2b-512 · AVX2 |
137B |
216.9 ns |
1.76 ns |
1.65 ns |
- |
| TryComputeHash · BLAKE2b-512 · Managed |
137B |
741.3 ns |
14.10 ns |
13.19 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-512 · BouncyCastle |
1KB |
715.2 ns |
2.15 ns |
2.01 ns |
- |
| TryComputeHash · BLAKE2b-512 · AVX2 |
1KB |
818.0 ns |
15.79 ns |
22.13 ns |
- |
| TryComputeHash · BLAKE2b-512 · Managed |
1KB |
2,909.2 ns |
53.10 ns |
44.34 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-512 · BouncyCastle |
1025B |
800.7 ns |
1.90 ns |
1.69 ns |
- |
| TryComputeHash · BLAKE2b-512 · AVX2 |
1025B |
897.4 ns |
6.00 ns |
5.01 ns |
- |
| TryComputeHash · BLAKE2b-512 · Managed |
1025B |
3,223.0 ns |
41.31 ns |
36.62 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-512 · BouncyCastle |
8KB |
5,645.8 ns |
93.75 ns |
87.70 ns |
- |
| TryComputeHash · BLAKE2b-512 · AVX2 |
8KB |
6,400.6 ns |
124.77 ns |
170.79 ns |
- |
| TryComputeHash · BLAKE2b-512 · Managed |
8KB |
22,623.6 ns |
148.15 ns |
138.58 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-512 · BouncyCastle |
128KB |
92,037.9 ns |
1,794.39 ns |
3,095.24 ns |
- |
| TryComputeHash · BLAKE2b-512 · AVX2 |
128KB |
101,625.6 ns |
1,342.75 ns |
1,190.31 ns |
- |
| TryComputeHash · BLAKE2b-512 · Managed |
128KB |
366,554.2 ns |
4,273.47 ns |
3,568.54 ns |
- |
BLAKE2s-128
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · BLAKE2s-128 · Ssse3 |
128B |
158.2 ns |
0.48 ns |
0.45 ns |
- |
| TryComputeHash · BLAKE2s-128 · BouncyCastle |
128B |
158.3 ns |
0.67 ns |
0.60 ns |
- |
| TryComputeHash · BLAKE2s-128 · AVX2 |
128B |
158.9 ns |
2.18 ns |
1.93 ns |
- |
| TryComputeHash · BLAKE2s-128 · Sse2 |
128B |
163.0 ns |
2.11 ns |
1.97 ns |
- |
| TryComputeHash · BLAKE2s-128 · Managed |
128B |
596.8 ns |
1.73 ns |
1.53 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-128 · AVX2 |
137B |
237.4 ns |
1.19 ns |
1.11 ns |
- |
| TryComputeHash · BLAKE2s-128 · Ssse3 |
137B |
240.6 ns |
0.84 ns |
0.66 ns |
- |
| TryComputeHash · BLAKE2s-128 · BouncyCastle |
137B |
243.3 ns |
1.09 ns |
0.91 ns |
- |
| TryComputeHash · BLAKE2s-128 · Sse2 |
137B |
245.6 ns |
0.60 ns |
0.56 ns |
- |
| TryComputeHash · BLAKE2s-128 · Managed |
137B |
895.0 ns |
8.05 ns |
7.53 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-128 · Ssse3 |
1KB |
1,218.7 ns |
2.81 ns |
2.19 ns |
- |
| TryComputeHash · BLAKE2s-128 · AVX2 |
1KB |
1,225.7 ns |
14.26 ns |
13.34 ns |
- |
| TryComputeHash · BLAKE2s-128 · BouncyCastle |
1KB |
1,227.2 ns |
3.20 ns |
2.50 ns |
- |
| TryComputeHash · BLAKE2s-128 · Sse2 |
1KB |
1,247.4 ns |
2.70 ns |
2.25 ns |
- |
| TryComputeHash · BLAKE2s-128 · Managed |
1KB |
4,682.4 ns |
29.11 ns |
24.30 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-128 · AVX2 |
1025B |
1,296.4 ns |
5.49 ns |
5.13 ns |
- |
| TryComputeHash · BLAKE2s-128 · Ssse3 |
1025B |
1,303.3 ns |
2.77 ns |
2.60 ns |
- |
| TryComputeHash · BLAKE2s-128 · BouncyCastle |
1025B |
1,309.9 ns |
10.72 ns |
10.03 ns |
- |
| TryComputeHash · BLAKE2s-128 · Sse2 |
1025B |
1,333.5 ns |
3.80 ns |
3.17 ns |
- |
| TryComputeHash · BLAKE2s-128 · Managed |
1025B |
4,972.0 ns |
18.90 ns |
16.75 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-128 · AVX2 |
8KB |
9,697.8 ns |
69.58 ns |
61.68 ns |
- |
| TryComputeHash · BLAKE2s-128 · BouncyCastle |
8KB |
9,712.2 ns |
87.48 ns |
73.05 ns |
- |
| TryComputeHash · BLAKE2s-128 · Ssse3 |
8KB |
9,718.3 ns |
26.03 ns |
21.73 ns |
- |
| TryComputeHash · BLAKE2s-128 · Sse2 |
8KB |
9,951.7 ns |
23.10 ns |
20.48 ns |
- |
| TryComputeHash · BLAKE2s-128 · Managed |
8KB |
37,607.4 ns |
478.35 ns |
424.04 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-128 · BouncyCastle |
128KB |
154,890.9 ns |
1,429.09 ns |
1,266.85 ns |
- |
| TryComputeHash · BLAKE2s-128 · Ssse3 |
128KB |
155,336.3 ns |
457.55 ns |
427.99 ns |
- |
| TryComputeHash · BLAKE2s-128 · AVX2 |
128KB |
157,423.7 ns |
2,592.44 ns |
2,424.97 ns |
- |
| TryComputeHash · BLAKE2s-128 · Sse2 |
128KB |
160,574.9 ns |
1,991.14 ns |
1,862.51 ns |
- |
| TryComputeHash · BLAKE2s-128 · Managed |
128KB |
598,904.3 ns |
3,504.74 ns |
2,926.61 ns |
- |
BLAKE2s-256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · BLAKE2s-256 · Ssse3 |
128B |
159.6 ns |
1.60 ns |
1.33 ns |
- |
| TryComputeHash · BLAKE2s-256 · AVX2 |
128B |
161.6 ns |
1.24 ns |
1.16 ns |
- |
| TryComputeHash · BLAKE2s-256 · BouncyCastle |
128B |
162.3 ns |
2.01 ns |
1.88 ns |
- |
| TryComputeHash · BLAKE2s-256 · Sse2 |
128B |
162.7 ns |
1.07 ns |
0.95 ns |
- |
| TryComputeHash · BLAKE2s-256 · Managed |
128B |
608.0 ns |
9.37 ns |
8.76 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-256 · Ssse3 |
137B |
242.3 ns |
0.96 ns |
0.80 ns |
- |
| TryComputeHash · BLAKE2s-256 · BouncyCastle |
137B |
244.9 ns |
1.65 ns |
1.38 ns |
- |
| TryComputeHash · BLAKE2s-256 · AVX2 |
137B |
245.5 ns |
4.93 ns |
5.27 ns |
- |
| TryComputeHash · BLAKE2s-256 · Sse2 |
137B |
251.2 ns |
3.75 ns |
3.51 ns |
- |
| TryComputeHash · BLAKE2s-256 · Managed |
137B |
896.7 ns |
7.74 ns |
6.86 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-256 · AVX2 |
1KB |
1,223.1 ns |
8.26 ns |
7.32 ns |
- |
| TryComputeHash · BLAKE2s-256 · BouncyCastle |
1KB |
1,237.8 ns |
13.01 ns |
11.53 ns |
- |
| TryComputeHash · BLAKE2s-256 · Ssse3 |
1KB |
1,238.1 ns |
20.82 ns |
19.47 ns |
- |
| TryComputeHash · BLAKE2s-256 · Sse2 |
1KB |
1,260.9 ns |
18.10 ns |
16.04 ns |
- |
| TryComputeHash · BLAKE2s-256 · Managed |
1KB |
4,741.3 ns |
93.85 ns |
92.18 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-256 · Ssse3 |
1025B |
1,317.9 ns |
18.39 ns |
17.20 ns |
- |
| TryComputeHash · BLAKE2s-256 · AVX2 |
1025B |
1,324.8 ns |
26.22 ns |
29.14 ns |
- |
| TryComputeHash · BLAKE2s-256 · BouncyCastle |
1025B |
1,329.5 ns |
26.20 ns |
24.51 ns |
- |
| TryComputeHash · BLAKE2s-256 · Sse2 |
1025B |
1,344.4 ns |
14.66 ns |
13.00 ns |
- |
| TryComputeHash · BLAKE2s-256 · Managed |
1025B |
4,993.0 ns |
49.90 ns |
46.68 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-256 · BouncyCastle |
8KB |
9,726.0 ns |
115.85 ns |
96.74 ns |
- |
| TryComputeHash · BLAKE2s-256 · Ssse3 |
8KB |
9,744.1 ns |
64.38 ns |
53.76 ns |
- |
| TryComputeHash · BLAKE2s-256 · AVX2 |
8KB |
9,765.7 ns |
132.15 ns |
123.62 ns |
- |
| TryComputeHash · BLAKE2s-256 · Sse2 |
8KB |
10,006.2 ns |
116.60 ns |
103.36 ns |
- |
| TryComputeHash · BLAKE2s-256 · Managed |
8KB |
37,976.0 ns |
737.51 ns |
653.78 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-256 · BouncyCastle |
128KB |
154,952.0 ns |
1,259.43 ns |
1,051.68 ns |
- |
| TryComputeHash · BLAKE2s-256 · AVX2 |
128KB |
155,754.7 ns |
2,006.08 ns |
1,778.34 ns |
- |
| TryComputeHash · BLAKE2s-256 · Ssse3 |
128KB |
156,354.6 ns |
1,422.27 ns |
1,187.66 ns |
- |
| TryComputeHash · BLAKE2s-256 · Sse2 |
128KB |
159,288.7 ns |
885.89 ns |
785.32 ns |
- |
| TryComputeHash · BLAKE2s-256 · Managed |
128KB |
602,295.5 ns |
5,429.99 ns |
4,534.29 ns |
- |
BLAKE3
BLAKE3 is a modern hash function designed for extreme parallelism and speed. It can leverage tree hashing to process multiple chunks simultaneously, making it ideal for hashing large files. The Native (Rust) variant uses blake3-dotnet, which wraps the official Rust implementation via P/Invoke—this is the fastest option and recommended when native dependencies are acceptable.
The managed CryptoHives implementation uses SSSE3 SIMD instructions with optimized state management (direct Sse2.LoadVector128/Store for chaining values, zero-copy message casting, and SSSE3-accelerated root squeeze). At small inputs (128B), the SSSE3 path achieves 139ns—only ~1.4× slower than the native Rust implementation (102ns) and ~9× faster than BouncyCastle (1,282ns). At large inputs (128KB), the gap widens to ~12× because the native implementation parallelizes chunk compression across SIMD lanes (AVX2/AVX-512 hash_many), while the managed version processes chunks sequentially. The scalar managed fallback (~545ns at 128B) still outperforms BouncyCastle by ~2.4×.
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · BLAKE3 · Native |
128B |
98.81 ns |
0.719 ns |
0.600 ns |
- |
| TryComputeHash · BLAKE3 · Ssse3 |
128B |
139.20 ns |
0.569 ns |
0.475 ns |
- |
| TryComputeHash · BLAKE3 · Managed |
128B |
551.47 ns |
5.422 ns |
4.806 ns |
- |
| TryComputeHash · BLAKE3 · BouncyCastle |
128B |
1,314.20 ns |
24.402 ns |
21.632 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE3 · Native |
137B |
151.42 ns |
1.009 ns |
0.842 ns |
- |
| TryComputeHash · BLAKE3 · Ssse3 |
137B |
219.47 ns |
3.108 ns |
2.907 ns |
- |
| TryComputeHash · BLAKE3 · Managed |
137B |
825.26 ns |
6.389 ns |
5.335 ns |
- |
| TryComputeHash · BLAKE3 · BouncyCastle |
137B |
1,940.56 ns |
3.500 ns |
3.274 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE3 · Native |
1KB |
748.31 ns |
1.951 ns |
1.729 ns |
- |
| TryComputeHash · BLAKE3 · Ssse3 |
1KB |
1,085.16 ns |
14.151 ns |
11.816 ns |
- |
| TryComputeHash · BLAKE3 · Managed |
1KB |
4,200.94 ns |
19.038 ns |
16.877 ns |
- |
| TryComputeHash · BLAKE3 · BouncyCastle |
1KB |
9,518.08 ns |
60.288 ns |
56.394 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE3 · Native |
1025B |
851.02 ns |
3.243 ns |
2.875 ns |
- |
| TryComputeHash · BLAKE3 · Ssse3 |
1025B |
1,242.36 ns |
6.202 ns |
5.179 ns |
- |
| TryComputeHash · BLAKE3 · Managed |
1025B |
4,749.47 ns |
27.098 ns |
25.348 ns |
- |
| TryComputeHash · BLAKE3 · BouncyCastle |
1025B |
10,973.20 ns |
77.121 ns |
72.139 ns |
56 B |
|
|
|
|
|
|
| TryComputeHash · BLAKE3 · Native |
8KB |
1,185.75 ns |
4.694 ns |
4.162 ns |
- |
| TryComputeHash · BLAKE3 · Ssse3 |
8KB |
9,855.63 ns |
50.941 ns |
42.538 ns |
- |
| TryComputeHash · BLAKE3 · Managed |
8KB |
35,446.52 ns |
172.789 ns |
161.627 ns |
- |
| TryComputeHash · BLAKE3 · BouncyCastle |
8KB |
80,231.04 ns |
490.246 ns |
458.576 ns |
392 B |
|
|
|
|
|
|
| TryComputeHash · BLAKE3 · Native |
128KB |
16,884.46 ns |
156.944 ns |
146.806 ns |
- |
| TryComputeHash · BLAKE3 · Ssse3 |
128KB |
164,448.76 ns |
707.056 ns |
661.381 ns |
- |
| TryComputeHash · BLAKE3 · Managed |
128KB |
571,607.17 ns |
2,301.243 ns |
2,152.584 ns |
- |
| TryComputeHash · BLAKE3 · BouncyCastle |
128KB |
1,262,952.30 ns |
12,870.460 ns |
11,409.327 ns |
7112 B |
Legacy Algorithms
MD5 and SHA-1 are provided exclusively for backward compatibility with legacy protocols and file formats (e.g., verifying old checksums, interoperability with legacy systems). Both algorithms have known cryptographic weaknesses:
- MD5: Vulnerable to collision attacks since 2004; should not be used for security
- SHA-1: Collision attacks demonstrated in 2017 (SHAttered); deprecated by NIST
The OS implementations are fastest due to potential hardware acceleration. The managed implementations prioritize correctness and portability over optimization, as these algorithms should only be used for non-security purposes.
MD5
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · MD5 · OS Native |
128B |
268.8 ns |
0.51 ns |
0.48 ns |
- |
| TryComputeHash · MD5 · Managed |
128B |
326.0 ns |
1.94 ns |
1.81 ns |
- |
| TryComputeHash · MD5 · BouncyCastle |
128B |
368.9 ns |
0.49 ns |
0.41 ns |
- |
|
|
|
|
|
|
| TryComputeHash · MD5 · OS Native |
137B |
268.0 ns |
0.66 ns |
0.62 ns |
- |
| TryComputeHash · MD5 · Managed |
137B |
328.9 ns |
1.11 ns |
0.92 ns |
- |
| TryComputeHash · MD5 · BouncyCastle |
137B |
368.7 ns |
0.85 ns |
0.79 ns |
- |
|
|
|
|
|
|
| TryComputeHash · MD5 · OS Native |
1KB |
1,371.9 ns |
2.61 ns |
2.44 ns |
- |
| TryComputeHash · MD5 · Managed |
1KB |
1,792.5 ns |
6.46 ns |
6.04 ns |
- |
| TryComputeHash · MD5 · BouncyCastle |
1KB |
2,010.4 ns |
3.58 ns |
3.35 ns |
- |
|
|
|
|
|
|
| TryComputeHash · MD5 · OS Native |
1025B |
1,367.8 ns |
1.75 ns |
1.55 ns |
- |
| TryComputeHash · MD5 · Managed |
1025B |
1,797.9 ns |
4.34 ns |
3.62 ns |
- |
| TryComputeHash · MD5 · BouncyCastle |
1025B |
2,008.4 ns |
4.30 ns |
3.82 ns |
- |
|
|
|
|
|
|
| TryComputeHash · MD5 · OS Native |
8KB |
10,158.8 ns |
9.82 ns |
9.19 ns |
- |
| TryComputeHash · MD5 · Managed |
8KB |
13,507.9 ns |
39.10 ns |
32.65 ns |
- |
| TryComputeHash · MD5 · BouncyCastle |
8KB |
15,114.1 ns |
19.00 ns |
16.84 ns |
- |
|
|
|
|
|
|
| TryComputeHash · MD5 · OS Native |
128KB |
160,881.9 ns |
129.41 ns |
114.72 ns |
- |
| TryComputeHash · MD5 · Managed |
128KB |
214,550.2 ns |
588.02 ns |
521.26 ns |
- |
| TryComputeHash · MD5 · BouncyCastle |
128KB |
240,087.5 ns |
311.72 ns |
291.58 ns |
- |
SHA-1
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA-1 · OS Native |
128B |
227.8 ns |
0.96 ns |
0.90 ns |
- |
| TryComputeHash · SHA-1 · BouncyCastle |
128B |
434.9 ns |
1.45 ns |
1.35 ns |
- |
| TryComputeHash · SHA-1 · Managed |
128B |
456.4 ns |
2.25 ns |
2.11 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-1 · OS Native |
137B |
233.5 ns |
0.50 ns |
0.45 ns |
- |
| TryComputeHash · SHA-1 · BouncyCastle |
137B |
437.4 ns |
1.68 ns |
1.57 ns |
- |
| TryComputeHash · SHA-1 · Managed |
137B |
453.4 ns |
1.03 ns |
0.97 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-1 · OS Native |
1KB |
1,096.1 ns |
3.44 ns |
3.05 ns |
- |
| TryComputeHash · SHA-1 · BouncyCastle |
1KB |
2,418.0 ns |
11.92 ns |
11.15 ns |
- |
| TryComputeHash · SHA-1 · Managed |
1KB |
2,449.2 ns |
11.50 ns |
10.76 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-1 · OS Native |
1025B |
1,098.8 ns |
3.32 ns |
3.10 ns |
- |
| TryComputeHash · SHA-1 · BouncyCastle |
1025B |
2,420.0 ns |
13.36 ns |
12.49 ns |
- |
| TryComputeHash · SHA-1 · Managed |
1025B |
2,445.9 ns |
6.40 ns |
5.99 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-1 · OS Native |
8KB |
8,037.7 ns |
23.54 ns |
22.02 ns |
- |
| TryComputeHash · SHA-1 · BouncyCastle |
8KB |
18,211.1 ns |
63.05 ns |
52.65 ns |
- |
| TryComputeHash · SHA-1 · Managed |
8KB |
18,305.6 ns |
50.34 ns |
42.03 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-1 · OS Native |
128KB |
127,145.3 ns |
348.90 ns |
326.36 ns |
- |
| TryComputeHash · SHA-1 · BouncyCastle |
128KB |
289,652.4 ns |
1,753.58 ns |
1,640.30 ns |
- |
| TryComputeHash · SHA-1 · Managed |
128KB |
291,416.7 ns |
2,489.95 ns |
2,079.22 ns |
- |
Regional Standards
These algorithms serve regulatory compliance requirements in specific jurisdictions. While not commonly used in Western applications, they are mandatory in their respective regions:
| Algorithm |
Region |
Use Case |
| SM3 |
China |
Required for Chinese government and financial systems (GB/T 32905-2016) |
| Streebog |
Russia |
Russian federal standard GOST R 34.11-2012, required for government communications |
| Kupyna |
Ukraine |
Ukrainian national standard DSTU 7564:2014, required for government systems |
| LSH |
South Korea |
Korean national standard KS X 3262, approved by KCMVP |
| Whirlpool |
ISO/NESSIE |
European cryptographic standard (ISO/IEC 10118-3) |
| RIPEMD-160 |
Europe/Crypto |
Used in Bitcoin address generation and some European standards |
The managed Streebog implementation is notably faster (1.4–1.8×) than reference implementations while using less memory—important for embedded systems in constrained environments. The managed Kupyna implementation uses T-table optimization (combining SubBytes, ShiftBytes, and MixColumns) to outperform BouncyCastle by 30–45%. LSH is the first managed .NET implementation—no BouncyCastle or OS alternative exists.
SM3
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SM3 · Managed |
128B |
692.4 ns |
1.45 ns |
1.21 ns |
- |
| TryComputeHash · SM3 · BouncyCastle |
128B |
789.1 ns |
1.95 ns |
1.82 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SM3 · Managed |
137B |
694.5 ns |
0.81 ns |
0.63 ns |
- |
| TryComputeHash · SM3 · BouncyCastle |
137B |
791.0 ns |
3.94 ns |
3.69 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SM3 · Managed |
1KB |
3,866.0 ns |
12.26 ns |
10.87 ns |
- |
| TryComputeHash · SM3 · BouncyCastle |
1KB |
4,415.2 ns |
14.34 ns |
12.71 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SM3 · Managed |
1025B |
3,867.0 ns |
8.47 ns |
7.93 ns |
- |
| TryComputeHash · SM3 · BouncyCastle |
1025B |
4,411.8 ns |
14.19 ns |
12.58 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SM3 · Managed |
8KB |
29,290.8 ns |
76.41 ns |
67.74 ns |
- |
| TryComputeHash · SM3 · BouncyCastle |
8KB |
32,932.9 ns |
150.48 ns |
133.40 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SM3 · Managed |
128KB |
463,188.4 ns |
1,546.12 ns |
1,446.24 ns |
- |
| TryComputeHash · SM3 · BouncyCastle |
128KB |
528,446.4 ns |
1,621.63 ns |
1,437.53 ns |
- |
Streebog-256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Streebog-256 · Managed |
128B |
2.389 μs |
0.0082 μs |
0.0069 μs |
- |
| TryComputeHash · Streebog-256 · OpenGost |
128B |
3.437 μs |
0.0212 μs |
0.0199 μs |
408 B |
| TryComputeHash · Streebog-256 · BouncyCastle |
128B |
4.240 μs |
0.0161 μs |
0.0142 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-256 · Managed |
137B |
2.385 μs |
0.0044 μs |
0.0039 μs |
- |
| TryComputeHash · Streebog-256 · OpenGost |
137B |
3.426 μs |
0.0067 μs |
0.0056 μs |
408 B |
| TryComputeHash · Streebog-256 · BouncyCastle |
137B |
4.286 μs |
0.0162 μs |
0.0143 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-256 · Managed |
1KB |
9.191 μs |
0.0137 μs |
0.0115 μs |
- |
| TryComputeHash · Streebog-256 · OpenGost |
1KB |
12.714 μs |
0.0358 μs |
0.0335 μs |
408 B |
| TryComputeHash · Streebog-256 · BouncyCastle |
1KB |
16.502 μs |
0.0570 μs |
0.0505 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-256 · Managed |
1025B |
9.197 μs |
0.0219 μs |
0.0183 μs |
- |
| TryComputeHash · Streebog-256 · OpenGost |
1025B |
12.705 μs |
0.0748 μs |
0.0700 μs |
408 B |
| TryComputeHash · Streebog-256 · BouncyCastle |
1025B |
16.217 μs |
0.0557 μs |
0.0493 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-256 · Managed |
8KB |
62.578 μs |
0.1773 μs |
0.1659 μs |
- |
| TryComputeHash · Streebog-256 · OpenGost |
8KB |
86.673 μs |
0.2282 μs |
0.1906 μs |
408 B |
| TryComputeHash · Streebog-256 · BouncyCastle |
8KB |
115.720 μs |
0.2852 μs |
0.2667 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-256 · Managed |
128KB |
979.821 μs |
3.1227 μs |
2.9210 μs |
- |
| TryComputeHash · Streebog-256 · OpenGost |
128KB |
1,359.226 μs |
8.6605 μs |
8.1010 μs |
408 B |
| TryComputeHash · Streebog-256 · BouncyCastle |
128KB |
1,748.872 μs |
4.6952 μs |
4.1621 μs |
- |
Streebog-512
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Streebog-512 · Managed |
128B |
2.421 μs |
0.0053 μs |
0.0050 μs |
- |
| TryComputeHash · Streebog-512 · OpenGost |
128B |
3.381 μs |
0.0203 μs |
0.0190 μs |
176 B |
| TryComputeHash · Streebog-512 · BouncyCastle |
128B |
4.238 μs |
0.0164 μs |
0.0153 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-512 · Managed |
137B |
2.417 μs |
0.0028 μs |
0.0025 μs |
- |
| TryComputeHash · Streebog-512 · OpenGost |
137B |
3.374 μs |
0.0237 μs |
0.0210 μs |
176 B |
| TryComputeHash · Streebog-512 · BouncyCastle |
137B |
4.245 μs |
0.0289 μs |
0.0241 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-512 · Managed |
1KB |
9.224 μs |
0.0209 μs |
0.0174 μs |
- |
| TryComputeHash · Streebog-512 · OpenGost |
1KB |
12.623 μs |
0.0502 μs |
0.0469 μs |
176 B |
| TryComputeHash · Streebog-512 · BouncyCastle |
1KB |
16.161 μs |
0.0470 μs |
0.0392 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-512 · Managed |
1025B |
8.996 μs |
0.0170 μs |
0.0151 μs |
- |
| TryComputeHash · Streebog-512 · OpenGost |
1025B |
12.620 μs |
0.0469 μs |
0.0438 μs |
176 B |
| TryComputeHash · Streebog-512 · BouncyCastle |
1025B |
16.171 μs |
0.0523 μs |
0.0436 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-512 · Managed |
8KB |
63.743 μs |
0.1720 μs |
0.1609 μs |
- |
| TryComputeHash · Streebog-512 · OpenGost |
8KB |
86.514 μs |
0.3106 μs |
0.2905 μs |
176 B |
| TryComputeHash · Streebog-512 · BouncyCastle |
8KB |
112.461 μs |
0.4861 μs |
0.4309 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-512 · Managed |
128KB |
978.931 μs |
3.1155 μs |
2.7618 μs |
- |
| TryComputeHash · Streebog-512 · OpenGost |
128KB |
1,361.326 μs |
4.9066 μs |
4.3496 μs |
176 B |
| TryComputeHash · Streebog-512 · BouncyCastle |
128KB |
1,742.975 μs |
6.3171 μs |
5.9090 μs |
- |
Whirlpool
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Whirlpool · Managed |
128B |
1.345 μs |
0.0077 μs |
0.0072 μs |
- |
| TryComputeHash · Whirlpool · Hashify .NET |
128B |
1.987 μs |
0.0236 μs |
0.0209 μs |
6336 B |
| TryComputeHash · Whirlpool · BouncyCastle |
128B |
5.006 μs |
0.0262 μs |
0.0232 μs |
56 B |
|
|
|
|
|
|
| TryComputeHash · Whirlpool · Managed |
137B |
1.347 μs |
0.0076 μs |
0.0071 μs |
- |
| TryComputeHash · Whirlpool · Hashify .NET |
137B |
2.014 μs |
0.0234 μs |
0.0219 μs |
6328 B |
| TryComputeHash · Whirlpool · BouncyCastle |
137B |
5.032 μs |
0.0162 μs |
0.0136 μs |
56 B |
|
|
|
|
|
|
| TryComputeHash · Whirlpool · Managed |
1KB |
9.012 μs |
0.0363 μs |
0.0340 μs |
- |
| TryComputeHash · Whirlpool · Hashify .NET |
1KB |
10.253 μs |
0.0611 μs |
0.0510 μs |
12032 B |
| TryComputeHash · Whirlpool · BouncyCastle |
1KB |
31.051 μs |
0.2385 μs |
0.2231 μs |
56 B |
|
|
|
|
|
|
| TryComputeHash · Whirlpool · Managed |
1025B |
7.449 μs |
0.0211 μs |
0.0197 μs |
- |
| TryComputeHash · Whirlpool · Hashify .NET |
1025B |
10.285 μs |
0.0463 μs |
0.0410 μs |
12040 B |
| TryComputeHash · Whirlpool · BouncyCastle |
1025B |
31.002 μs |
0.1677 μs |
0.1486 μs |
56 B |
|
|
|
|
|
|
| TryComputeHash · Whirlpool · Managed |
8KB |
57.461 μs |
0.9536 μs |
0.7963 μs |
- |
| TryComputeHash · Whirlpool · Hashify .NET |
8KB |
75.981 μs |
0.7616 μs |
0.6751 μs |
58624 B |
| TryComputeHash · Whirlpool · BouncyCastle |
8KB |
242.989 μs |
4.5670 μs |
6.6942 μs |
56 B |
|
|
|
|
|
|
| TryComputeHash · Whirlpool · Managed |
128KB |
890.438 μs |
5.4600 μs |
5.1073 μs |
- |
| TryComputeHash · Whirlpool · Hashify .NET |
128KB |
1,251.434 μs |
6.2803 μs |
5.5673 μs |
857372 B |
| TryComputeHash · Whirlpool · BouncyCastle |
128KB |
3,790.528 μs |
13.4650 μs |
11.9364 μs |
56 B |
RIPEMD-160
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · RIPEMD-160 · BouncyCastle |
128B |
645.1 ns |
2.34 ns |
2.19 ns |
- |
| TryComputeHash · RIPEMD-160 · Managed |
128B |
713.1 ns |
2.25 ns |
1.88 ns |
- |
|
|
|
|
|
|
| TryComputeHash · RIPEMD-160 · BouncyCastle |
137B |
638.2 ns |
1.27 ns |
1.13 ns |
- |
| TryComputeHash · RIPEMD-160 · Managed |
137B |
717.4 ns |
1.65 ns |
1.47 ns |
- |
|
|
|
|
|
|
| TryComputeHash · RIPEMD-160 · BouncyCastle |
1KB |
3,548.9 ns |
5.48 ns |
4.85 ns |
- |
| TryComputeHash · RIPEMD-160 · Managed |
1KB |
3,986.9 ns |
20.03 ns |
17.76 ns |
- |
|
|
|
|
|
|
| TryComputeHash · RIPEMD-160 · BouncyCastle |
1025B |
3,557.6 ns |
9.50 ns |
8.89 ns |
- |
| TryComputeHash · RIPEMD-160 · Managed |
1025B |
4,110.9 ns |
22.77 ns |
19.02 ns |
- |
|
|
|
|
|
|
| TryComputeHash · RIPEMD-160 · BouncyCastle |
8KB |
26,895.6 ns |
51.95 ns |
46.06 ns |
- |
| TryComputeHash · RIPEMD-160 · Managed |
8KB |
30,059.0 ns |
72.77 ns |
68.07 ns |
- |
|
|
|
|
|
|
| TryComputeHash · RIPEMD-160 · BouncyCastle |
128KB |
426,223.2 ns |
852.40 ns |
711.79 ns |
- |
| TryComputeHash · RIPEMD-160 · Managed |
128KB |
476,956.2 ns |
2,233.75 ns |
2,089.45 ns |
- |
Kupyna-256 (DSTU 7564)
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Kupyna-256 · Managed |
128B |
2.313 μs |
0.0450 μs |
0.0518 μs |
- |
| TryComputeHash · Kupyna-256 · BouncyCastle |
128B |
3.294 μs |
0.0250 μs |
0.0234 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-256 · Managed |
137B |
2.268 μs |
0.0316 μs |
0.0264 μs |
- |
| TryComputeHash · Kupyna-256 · BouncyCastle |
137B |
3.286 μs |
0.0152 μs |
0.0135 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-256 · Managed |
1KB |
11.598 μs |
0.0403 μs |
0.0377 μs |
- |
| TryComputeHash · Kupyna-256 · BouncyCastle |
1KB |
16.369 μs |
0.1402 μs |
0.1312 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-256 · Managed |
1025B |
11.244 μs |
0.0717 μs |
0.0670 μs |
- |
| TryComputeHash · Kupyna-256 · BouncyCastle |
1025B |
16.421 μs |
0.1096 μs |
0.0915 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-256 · Managed |
8KB |
83.036 μs |
0.7287 μs |
0.6460 μs |
- |
| TryComputeHash · Kupyna-256 · BouncyCastle |
8KB |
120.937 μs |
0.6058 μs |
0.5370 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-256 · Managed |
128KB |
1,312.142 μs |
12.9352 μs |
12.0996 μs |
- |
| TryComputeHash · Kupyna-256 · BouncyCastle |
128KB |
1,915.741 μs |
15.9717 μs |
14.1585 μs |
- |
Kupyna-384 (DSTU 7564)
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Kupyna-384 · Managed |
128B |
4.297 μs |
0.0458 μs |
0.0428 μs |
- |
| TryComputeHash · Kupyna-384 · BouncyCastle |
128B |
6.652 μs |
0.0290 μs |
0.0271 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-384 · Managed |
137B |
4.302 μs |
0.0443 μs |
0.0392 μs |
- |
| TryComputeHash · Kupyna-384 · BouncyCastle |
137B |
6.681 μs |
0.0486 μs |
0.0454 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-384 · Managed |
1KB |
16.239 μs |
0.1845 μs |
0.1726 μs |
- |
| TryComputeHash · Kupyna-384 · BouncyCastle |
1KB |
25.479 μs |
0.1039 μs |
0.0972 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-384 · Managed |
1025B |
16.163 μs |
0.1263 μs |
0.1182 μs |
- |
| TryComputeHash · Kupyna-384 · BouncyCastle |
1025B |
25.562 μs |
0.1893 μs |
0.1771 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-384 · Managed |
8KB |
111.263 μs |
0.8444 μs |
0.7898 μs |
- |
| TryComputeHash · Kupyna-384 · BouncyCastle |
8KB |
176.300 μs |
1.6017 μs |
1.4199 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-384 · Managed |
128KB |
1,747.562 μs |
16.5331 μs |
15.4650 μs |
- |
| TryComputeHash · Kupyna-384 · BouncyCastle |
128KB |
2,765.618 μs |
20.2107 μs |
17.9162 μs |
- |
Kupyna-512 (DSTU 7564)
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Kupyna-512 · Managed |
128B |
4.307 μs |
0.0338 μs |
0.0316 μs |
- |
| TryComputeHash · Kupyna-512 · BouncyCastle |
128B |
7.225 μs |
0.0477 μs |
0.0447 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-512 · Managed |
137B |
4.282 μs |
0.0347 μs |
0.0325 μs |
- |
| TryComputeHash · Kupyna-512 · BouncyCastle |
137B |
6.670 μs |
0.0467 μs |
0.0437 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-512 · Managed |
1KB |
16.213 μs |
0.2174 μs |
0.2033 μs |
- |
| TryComputeHash · Kupyna-512 · BouncyCastle |
1KB |
25.454 μs |
0.1347 μs |
0.1194 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-512 · Managed |
1025B |
16.273 μs |
0.2408 μs |
0.2135 μs |
- |
| TryComputeHash · Kupyna-512 · BouncyCastle |
1025B |
25.561 μs |
0.1198 μs |
0.1121 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-512 · Managed |
8KB |
111.827 μs |
0.7716 μs |
0.7218 μs |
- |
| TryComputeHash · Kupyna-512 · BouncyCastle |
8KB |
175.501 μs |
1.6704 μs |
1.5625 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-512 · Managed |
128KB |
1,748.794 μs |
16.5414 μs |
15.4728 μs |
- |
| TryComputeHash · Kupyna-512 · BouncyCastle |
128KB |
2,749.887 μs |
12.7021 μs |
11.2601 μs |
- |
LSH-256-256 (KS X 3262)
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · LSH-256-256 · Managed |
128B |
1.955 μs |
0.0257 μs |
0.0228 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-256-256 · Managed |
137B |
1.950 μs |
0.0129 μs |
0.0115 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-256-256 · Managed |
1KB |
8.515 μs |
0.0521 μs |
0.0487 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-256-256 · Managed |
1025B |
8.501 μs |
0.0643 μs |
0.0570 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-256-256 · Managed |
8KB |
61.726 μs |
0.6879 μs |
0.5744 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-256-256 · Managed |
128KB |
963.219 μs |
4.1959 μs |
3.9249 μs |
- |
LSH-512-256 (KS X 3262)
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · LSH-512-256 · Managed |
128B |
1.083 μs |
0.0069 μs |
0.0058 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-256 · Managed |
137B |
1.080 μs |
0.0086 μs |
0.0076 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-256 · Managed |
1KB |
5.223 μs |
0.0770 μs |
0.0720 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-256 · Managed |
1025B |
5.172 μs |
0.0280 μs |
0.0234 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-256 · Managed |
8KB |
33.618 μs |
0.2166 μs |
0.2026 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-256 · Managed |
128KB |
520.900 μs |
4.2357 μs |
3.9621 μs |
- |
LSH-512-512 (KS X 3262)
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · LSH-512-512 · Managed |
128B |
1.092 μs |
0.0158 μs |
0.0132 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-512 · Managed |
137B |
1.091 μs |
0.0124 μs |
0.0116 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-512 · Managed |
1KB |
5.181 μs |
0.0316 μs |
0.0280 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-512 · Managed |
1025B |
5.176 μs |
0.0314 μs |
0.0294 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-512 · Managed |
8KB |
33.924 μs |
0.4760 μs |
0.4452 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-512 · Managed |
128KB |
522.502 μs |
5.8934 μs |
5.5127 μs |
- |
Ascon Family
Ascon is a lightweight authenticated encryption and hashing family, selected as the NIST Lightweight Cryptography standard in 2023. It is designed for constrained environments (IoT, embedded systems) where resources are limited but security is paramount.
The managed implementation is approximately 33% faster than BouncyCastle across all input sizes, with consistent zero-allocation behavior regardless of input size—ideal for memory-constrained environments.
Ascon-Hash256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Ascon-Hash256 · Managed |
128B |
579.8 ns |
11.36 ns |
12.63 ns |
- |
| TryComputeHash · Ascon-Hash256 · BouncyCastle |
128B |
768.4 ns |
12.44 ns |
11.64 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-Hash256 · Managed |
137B |
606.2 ns |
4.96 ns |
4.40 ns |
- |
| TryComputeHash · Ascon-Hash256 · BouncyCastle |
137B |
807.3 ns |
9.84 ns |
9.21 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-Hash256 · Managed |
1KB |
3,756.6 ns |
61.14 ns |
57.19 ns |
- |
| TryComputeHash · Ascon-Hash256 · BouncyCastle |
1KB |
4,999.4 ns |
64.27 ns |
60.12 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-Hash256 · Managed |
1025B |
3,747.6 ns |
67.41 ns |
63.05 ns |
- |
| TryComputeHash · Ascon-Hash256 · BouncyCastle |
1025B |
5,006.1 ns |
92.76 ns |
86.77 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-Hash256 · Managed |
8KB |
29,138.6 ns |
449.13 ns |
420.12 ns |
- |
| TryComputeHash · Ascon-Hash256 · BouncyCastle |
8KB |
38,854.5 ns |
681.25 ns |
637.24 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-Hash256 · Managed |
128KB |
462,274.4 ns |
8,182.51 ns |
7,653.93 ns |
- |
| TryComputeHash · Ascon-Hash256 · BouncyCastle |
128KB |
615,387.2 ns |
9,071.26 ns |
8,041.44 ns |
- |
Ascon-XOF128
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Ascon-XOF128 · Managed |
128B |
573.9 ns |
5.01 ns |
4.18 ns |
- |
| TryComputeHash · Ascon-XOF128 · BouncyCastle |
128B |
764.9 ns |
11.42 ns |
10.13 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-XOF128 · Managed |
137B |
608.9 ns |
10.42 ns |
9.75 ns |
- |
| TryComputeHash · Ascon-XOF128 · BouncyCastle |
137B |
801.8 ns |
6.42 ns |
5.69 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-XOF128 · Managed |
1KB |
3,741.9 ns |
70.22 ns |
65.68 ns |
- |
| TryComputeHash · Ascon-XOF128 · BouncyCastle |
1KB |
4,954.6 ns |
83.53 ns |
78.14 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-XOF128 · Managed |
1025B |
3,747.0 ns |
50.01 ns |
46.78 ns |
- |
| TryComputeHash · Ascon-XOF128 · BouncyCastle |
1025B |
4,926.9 ns |
46.99 ns |
41.65 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-XOF128 · Managed |
8KB |
28,987.4 ns |
505.25 ns |
447.89 ns |
- |
| TryComputeHash · Ascon-XOF128 · BouncyCastle |
8KB |
38,618.1 ns |
744.02 ns |
695.96 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-XOF128 · Managed |
128KB |
457,370.8 ns |
5,060.83 ns |
4,226.02 ns |
- |
| TryComputeHash · Ascon-XOF128 · BouncyCastle |
128KB |
618,939.6 ns |
11,905.87 ns |
11,693.16 ns |
- |
KMAC Family
KMAC (Keccak Message Authentication Code) is defined in NIST SP 800-185 and provides a Keccak-based keyed hash function. Like SHA-3, SHAKE, and cSHAKE, KMAC shares the same optimized Keccak permutation core, benefiting from the scalar optimizations described in the Keccak section above.
The managed CryptoHives implementation is the fastest at all input sizes, outperforming the OS-provided KMAC by ~30% and BouncyCastle by ~48%. This advantage comes from the highly optimized scalar Keccak core that benefits both the hash computation and the KMAC-specific cSHAKE encoding overhead.
KMAC128
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| ComputeMac · TryComputeHash · Managed |
128B |
684.1 ns |
2.77 ns |
2.17 ns |
- |
| ComputeMac · ComputeHash · OS Native |
128B |
979.2 ns |
7.54 ns |
7.06 ns |
32 B |
| ComputeMac · ComputeHash · BouncyCastle |
128B |
1,317.1 ns |
7.89 ns |
7.38 ns |
160 B |
|
|
|
|
|
|
| ComputeMac · TryComputeHash · Managed |
137B |
681.5 ns |
2.98 ns |
2.64 ns |
- |
| ComputeMac · ComputeHash · OS Native |
137B |
999.1 ns |
6.96 ns |
6.17 ns |
32 B |
| ComputeMac · ComputeHash · BouncyCastle |
137B |
1,313.4 ns |
6.31 ns |
5.60 ns |
160 B |
|
|
|
|
|
|
| ComputeMac · TryComputeHash · Managed |
1KB |
1,913.4 ns |
12.64 ns |
11.21 ns |
- |
| ComputeMac · ComputeHash · OS Native |
1KB |
2,387.7 ns |
9.57 ns |
7.99 ns |
32 B |
| ComputeMac · ComputeHash · BouncyCastle |
1KB |
3,144.8 ns |
17.82 ns |
16.67 ns |
160 B |
|
|
|
|
|
|
| ComputeMac · TryComputeHash · Managed |
1025B |
1,917.9 ns |
15.19 ns |
14.21 ns |
- |
| ComputeMac · ComputeHash · OS Native |
1025B |
2,404.8 ns |
11.15 ns |
10.43 ns |
32 B |
| ComputeMac · ComputeHash · BouncyCastle |
1025B |
3,141.0 ns |
12.15 ns |
11.37 ns |
160 B |
|
|
|
|
|
|
| ComputeMac · TryComputeHash · Managed |
8KB |
10,210.1 ns |
62.72 ns |
58.66 ns |
- |
| ComputeMac · ComputeHash · OS Native |
8KB |
12,302.0 ns |
59.27 ns |
55.44 ns |
32 B |
| ComputeMac · ComputeHash · BouncyCastle |
8KB |
16,053.3 ns |
86.60 ns |
81.00 ns |
160 B |
|
|
|
|
|
|
| ComputeMac · TryComputeHash · Managed |
128KB |
155,508.1 ns |
692.57 ns |
647.83 ns |
- |
| ComputeMac · ComputeHash · OS Native |
128KB |
185,262.8 ns |
1,187.57 ns |
1,110.86 ns |
32 B |
| ComputeMac · ComputeHash · BouncyCastle |
128KB |
239,918.3 ns |
755.69 ns |
706.87 ns |
160 B |
KMAC256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| ComputeMac · TryComputeHash · Managed |
128B |
670.2 ns |
3.73 ns |
3.49 ns |
- |
| ComputeMac · ComputeHash · OS Native |
128B |
981.9 ns |
5.51 ns |
4.88 ns |
32 B |
| ComputeMac · ComputeHash · BouncyCastle |
128B |
1,307.9 ns |
5.31 ns |
4.71 ns |
160 B |
|
|
|
|
|
|
| ComputeMac · TryComputeHash · Managed |
137B |
910.6 ns |
4.05 ns |
3.79 ns |
- |
| ComputeMac · ComputeHash · OS Native |
137B |
1,225.4 ns |
5.72 ns |
5.07 ns |
32 B |
| ComputeMac · ComputeHash · BouncyCastle |
137B |
1,599.8 ns |
5.55 ns |
4.92 ns |
160 B |
|
|
|
|
|
|
| ComputeMac · TryComputeHash · Managed |
1KB |
2,056.8 ns |
8.67 ns |
7.69 ns |
- |
| ComputeMac · ComputeHash · OS Native |
1KB |
2,613.5 ns |
14.35 ns |
13.42 ns |
32 B |
| ComputeMac · ComputeHash · BouncyCastle |
1KB |
3,421.4 ns |
6.58 ns |
5.83 ns |
160 B |
|
|
|
|
|
|
| ComputeMac · TryComputeHash · Managed |
1025B |
2,060.7 ns |
10.94 ns |
9.14 ns |
- |
| ComputeMac · ComputeHash · OS Native |
1025B |
2,671.6 ns |
13.54 ns |
12.66 ns |
32 B |
| ComputeMac · ComputeHash · BouncyCastle |
1025B |
3,417.1 ns |
12.41 ns |
11.61 ns |
160 B |
|
|
|
|
|
|
| ComputeMac · TryComputeHash · Managed |
8KB |
12,493.1 ns |
55.66 ns |
52.06 ns |
- |
| ComputeMac · ComputeHash · OS Native |
8KB |
15,070.9 ns |
59.46 ns |
55.62 ns |
32 B |
| ComputeMac · ComputeHash · BouncyCastle |
8KB |
19,467.7 ns |
55.94 ns |
46.71 ns |
160 B |
|
|
|
|
|
|
| ComputeMac · TryComputeHash · Managed |
128KB |
189,517.1 ns |
467.77 ns |
390.61 ns |
- |
| ComputeMac · ComputeHash · OS Native |
128KB |
226,397.1 ns |
1,119.12 ns |
992.07 ns |
32 B |
| ComputeMac · ComputeHash · BouncyCastle |
128KB |
292,863.5 ns |
881.67 ns |
781.57 ns |
160 B |
XOF Mode Benchmarks
The XOF (extendable-output function) benchmarks measure squeeze throughput via the IExtendableOutput interface. Each iteration absorbs a fixed 2 KB of input (two 1 KB blocks), then squeezes a variable number of output bytes (128 B to 128 KB). This isolates the squeeze permutation cost from absorb overhead, which is the defining performance characteristic of XOF algorithms. The fixed-output hash benchmarks above measure TryComputeHash with a small fixed digest; these benchmarks focus on the extendable output path.
Implementations include CryptoHives managed, BouncyCastle, OS native, and native Rust (BLAKE3) where available.
SHAKE128 XOF
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| AbsorbSqueeze · SHAKE128 · Managed |
128B |
2.811 μs |
0.0159 μs |
0.0149 μs |
- |
| AbsorbSqueeze · SHAKE128 · OS Native |
128B |
3.342 μs |
0.0218 μs |
0.0204 μs |
- |
| AbsorbSqueeze · SHAKE128 · BouncyCastle |
128B |
4.131 μs |
0.0256 μs |
0.0240 μs |
- |
|
|
|
|
|
|
| AbsorbSqueeze · SHAKE128 · Managed |
1KB |
4.571 μs |
0.0282 μs |
0.0263 μs |
- |
| AbsorbSqueeze · SHAKE128 · OS Native |
1KB |
4.801 μs |
0.0299 μs |
0.0280 μs |
- |
| AbsorbSqueeze · SHAKE128 · BouncyCastle |
1KB |
6.098 μs |
0.0553 μs |
0.0490 μs |
1152 B |
|
|
|
|
|
|
| AbsorbSqueeze · SHAKE128 · OS Native |
8KB |
15.088 μs |
0.1631 μs |
0.1446 μs |
- |
| AbsorbSqueeze · SHAKE128 · Managed |
8KB |
17.424 μs |
0.1068 μs |
0.0999 μs |
- |
| AbsorbSqueeze · SHAKE128 · BouncyCastle |
8KB |
19.935 μs |
0.1608 μs |
0.1504 μs |
9216 B |
|
|
|
|
|
|
| AbsorbSqueeze · SHAKE128 · OS Native |
128KB |
193.946 μs |
1.6483 μs |
1.5418 μs |
- |
| AbsorbSqueeze · SHAKE128 · Managed |
128KB |
239.547 μs |
1.8561 μs |
1.6454 μs |
- |
| AbsorbSqueeze · SHAKE128 · BouncyCastle |
128KB |
263.310 μs |
2.4667 μs |
2.3074 μs |
149760 B |
SHAKE256 XOF
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| AbsorbSqueeze · SHAKE256 · Managed |
128B |
3.394 μs |
0.0199 μs |
0.0186 μs |
- |
| AbsorbSqueeze · SHAKE256 · OS Native |
128B |
4.047 μs |
0.0343 μs |
0.0321 μs |
- |
| AbsorbSqueeze · SHAKE256 · BouncyCastle |
128B |
5.012 μs |
0.0297 μs |
0.0278 μs |
- |
|
|
|
|
|
|
| AbsorbSqueeze · SHAKE256 · Managed |
1KB |
5.364 μs |
0.0526 μs |
0.0492 μs |
- |
| AbsorbSqueeze · SHAKE256 · OS Native |
1KB |
5.744 μs |
0.0300 μs |
0.0281 μs |
- |
| AbsorbSqueeze · SHAKE256 · BouncyCastle |
1KB |
7.299 μs |
0.0340 μs |
0.0318 μs |
1120 B |
|
|
|
|
|
|
| AbsorbSqueeze · SHAKE256 · OS Native |
8KB |
18.539 μs |
0.1094 μs |
0.1023 μs |
- |
| AbsorbSqueeze · SHAKE256 · Managed |
8KB |
20.323 μs |
0.1186 μs |
0.1109 μs |
- |
| AbsorbSqueeze · SHAKE256 · BouncyCastle |
8KB |
24.710 μs |
0.1296 μs |
0.1213 μs |
9600 B |
|
|
|
|
|
|
| AbsorbSqueeze · SHAKE256 · OS Native |
128KB |
237.210 μs |
1.4442 μs |
1.3509 μs |
- |
| AbsorbSqueeze · SHAKE256 · Managed |
128KB |
276.694 μs |
2.3818 μs |
2.2279 μs |
- |
| AbsorbSqueeze · SHAKE256 · BouncyCastle |
128KB |
325.734 μs |
4.1068 μs |
3.8415 μs |
154080 B |
cSHAKE128 XOF
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| AbsorbSqueeze · cSHAKE128 · Managed |
128B |
2.836 μs |
0.0163 μs |
0.0136 μs |
- |
| AbsorbSqueeze · cSHAKE128 · BouncyCastle |
128B |
4.156 μs |
0.0249 μs |
0.0221 μs |
- |
|
|
|
|
|
|
| AbsorbSqueeze · cSHAKE128 · Managed |
1KB |
4.606 μs |
0.0315 μs |
0.0295 μs |
- |
| AbsorbSqueeze · cSHAKE128 · BouncyCastle |
1KB |
6.181 μs |
0.0539 μs |
0.0478 μs |
1152 B |
|
|
|
|
|
|
| AbsorbSqueeze · cSHAKE128 · Managed |
8KB |
17.668 μs |
0.3276 μs |
0.3065 μs |
- |
| AbsorbSqueeze · cSHAKE128 · BouncyCastle |
8KB |
20.208 μs |
0.2379 μs |
0.2226 μs |
9216 B |
|
|
|
|
|
|
| AbsorbSqueeze · cSHAKE128 · Managed |
128KB |
241.793 μs |
2.4495 μs |
2.1714 μs |
- |
| AbsorbSqueeze · cSHAKE128 · BouncyCastle |
128KB |
267.440 μs |
4.3463 μs |
4.0655 μs |
149760 B |
cSHAKE256 XOF
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| AbsorbSqueeze · cSHAKE256 · Managed |
128B |
3.427 μs |
0.0293 μs |
0.0274 μs |
- |
| AbsorbSqueeze · cSHAKE256 · BouncyCastle |
128B |
5.073 μs |
0.0357 μs |
0.0316 μs |
- |
|
|
|
|
|
|
| AbsorbSqueeze · cSHAKE256 · Managed |
1KB |
5.355 μs |
0.0328 μs |
0.0291 μs |
- |
| AbsorbSqueeze · cSHAKE256 · BouncyCastle |
1KB |
7.371 μs |
0.0416 μs |
0.0389 μs |
1120 B |
|
|
|
|
|
|
| AbsorbSqueeze · cSHAKE256 · Managed |
8KB |
20.462 μs |
0.1933 μs |
0.1714 μs |
- |
| AbsorbSqueeze · cSHAKE256 · BouncyCastle |
8KB |
25.064 μs |
0.1812 μs |
0.1695 μs |
9600 B |
|
|
|
|
|
|
| AbsorbSqueeze · cSHAKE256 · Managed |
128KB |
277.657 μs |
2.9247 μs |
2.5927 μs |
- |
| AbsorbSqueeze · cSHAKE256 · BouncyCastle |
128KB |
327.108 μs |
2.8319 μs |
2.6489 μs |
154080 B |
TurboSHAKE128 XOF
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| AbsorbSqueeze · TurboSHAKE128 · Managed |
128B |
1.589 μs |
0.0141 μs |
0.0132 μs |
- |
|
|
|
|
|
|
| AbsorbSqueeze · TurboSHAKE128 · Managed |
1KB |
2.780 μs |
0.0183 μs |
0.0171 μs |
- |
|
|
|
|
|
|
| AbsorbSqueeze · TurboSHAKE128 · Managed |
8KB |
11.697 μs |
0.0939 μs |
0.0878 μs |
- |
|
|
|
|
|
|
| AbsorbSqueeze · TurboSHAKE128 · Managed |
128KB |
165.344 μs |
1.1889 μs |
1.1121 μs |
- |
TurboSHAKE256 XOF
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| AbsorbSqueeze · TurboSHAKE256 · Managed |
128B |
1.893 μs |
0.0097 μs |
0.0091 μs |
- |
|
|
|
|
|
|
| AbsorbSqueeze · TurboSHAKE256 · Managed |
1KB |
3.187 μs |
0.0239 μs |
0.0212 μs |
- |
|
|
|
|
|
|
| AbsorbSqueeze · TurboSHAKE256 · Managed |
8KB |
13.181 μs |
0.0893 μs |
0.0791 μs |
- |
|
|
|
|
|
|
| AbsorbSqueeze · TurboSHAKE256 · Managed |
128KB |
184.614 μs |
1.2906 μs |
1.2073 μs |
- |
KT128 XOF
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Median |
Allocated |
| AbsorbSqueeze · KT128 · Managed |
128B |
1.622 μs |
0.0118 μs |
0.0110 μs |
1.622 μs |
- |
|
|
|
|
|
|
|
| AbsorbSqueeze · KT128 · Managed |
1KB |
2.818 μs |
0.0229 μs |
0.0214 μs |
2.816 μs |
- |
|
|
|
|
|
|
|
| AbsorbSqueeze · KT128 · Managed |
8KB |
12.010 μs |
0.2010 μs |
0.3920 μs |
11.830 μs |
- |
|
|
|
|
|
|
|
| AbsorbSqueeze · KT128 · Managed |
128KB |
166.194 μs |
1.0116 μs |
0.9463 μs |
166.569 μs |
- |
KT256 XOF
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| AbsorbSqueeze · KT256 · Managed |
128B |
1.930 μs |
0.0130 μs |
0.0122 μs |
- |
|
|
|
|
|
|
| AbsorbSqueeze · KT256 · Managed |
1KB |
3.214 μs |
0.0193 μs |
0.0181 μs |
- |
|
|
|
|
|
|
| AbsorbSqueeze · KT256 · Managed |
8KB |
13.273 μs |
0.0754 μs |
0.0705 μs |
- |
|
|
|
|
|
|
| AbsorbSqueeze · KT256 · Managed |
128KB |
184.963 μs |
1.1531 μs |
1.0786 μs |
- |
KMAC128 XOF
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| AbsorbSqueeze · KMAC-128 · Managed |
128B |
3.294 μs |
0.0375 μs |
0.0350 μs |
- |
| AbsorbSqueeze · KMAC-128 · OS Native |
128B |
4.050 μs |
0.0657 μs |
0.0548 μs |
32 B |
| AbsorbSqueeze · KMAC-128 · BouncyCastle |
128B |
5.160 μs |
0.0347 μs |
0.0325 μs |
128 B |
|
|
|
|
|
|
| AbsorbSqueeze · KMAC-128 · Managed |
1KB |
5.049 μs |
0.0451 μs |
0.0400 μs |
- |
| AbsorbSqueeze · KMAC-128 · OS Native |
1KB |
5.467 μs |
0.0407 μs |
0.0361 μs |
32 B |
| AbsorbSqueeze · KMAC-128 · BouncyCastle |
1KB |
7.196 μs |
0.0541 μs |
0.0506 μs |
1280 B |
|
|
|
|
|
|
| AbsorbSqueeze · KMAC-128 · OS Native |
8KB |
15.919 μs |
0.1590 μs |
0.1328 μs |
32 B |
| AbsorbSqueeze · KMAC-128 · Managed |
8KB |
17.989 μs |
0.1714 μs |
0.1603 μs |
- |
| AbsorbSqueeze · KMAC-128 · BouncyCastle |
8KB |
21.169 μs |
0.1310 μs |
0.1225 μs |
9344 B |
|
|
|
|
|
|
| AbsorbSqueeze · KMAC-128 · OS Native |
128KB |
196.669 μs |
1.8585 μs |
1.6475 μs |
32 B |
| AbsorbSqueeze · KMAC-128 · Managed |
128KB |
242.259 μs |
1.6483 μs |
1.4612 μs |
- |
| AbsorbSqueeze · KMAC-128 · BouncyCastle |
128KB |
267.527 μs |
2.7007 μs |
2.3941 μs |
149888 B |
KMAC256 XOF
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| AbsorbSqueeze · KMAC-256 · Managed |
128B |
3.867 μs |
0.0370 μs |
0.0328 μs |
- |
| AbsorbSqueeze · KMAC-256 · OS Native |
128B |
4.763 μs |
0.0459 μs |
0.0407 μs |
32 B |
| AbsorbSqueeze · KMAC-256 · BouncyCastle |
128B |
6.103 μs |
0.0519 μs |
0.0486 μs |
128 B |
|
|
|
|
|
|
| AbsorbSqueeze · KMAC-256 · Managed |
1KB |
5.824 μs |
0.0503 μs |
0.0446 μs |
- |
| AbsorbSqueeze · KMAC-256 · OS Native |
1KB |
6.453 μs |
0.0809 μs |
0.0717 μs |
32 B |
| AbsorbSqueeze · KMAC-256 · BouncyCastle |
1KB |
8.385 μs |
0.0548 μs |
0.0458 μs |
1248 B |
|
|
|
|
|
|
| AbsorbSqueeze · KMAC-256 · OS Native |
8KB |
19.273 μs |
0.1469 μs |
0.1302 μs |
32 B |
| AbsorbSqueeze · KMAC-256 · Managed |
8KB |
20.938 μs |
0.2444 μs |
0.2286 μs |
- |
| AbsorbSqueeze · KMAC-256 · BouncyCastle |
8KB |
25.787 μs |
0.2122 μs |
0.1985 μs |
9728 B |
|
|
|
|
|
|
| AbsorbSqueeze · KMAC-256 · OS Native |
128KB |
238.920 μs |
1.8466 μs |
1.7274 μs |
32 B |
| AbsorbSqueeze · KMAC-256 · Managed |
128KB |
276.988 μs |
2.2135 μs |
1.9622 μs |
- |
| AbsorbSqueeze · KMAC-256 · BouncyCastle |
128KB |
328.022 μs |
2.8794 μs |
2.6934 μs |
154208 B |
BLAKE3 XOF
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| AbsorbSqueeze · BLAKE3 · Native |
128B |
1.578 μs |
0.0066 μs |
0.0058 μs |
- |
| AbsorbSqueeze · BLAKE3 · Ssse3 |
128B |
2.350 μs |
0.0118 μs |
0.0099 μs |
- |
| AbsorbSqueeze · BLAKE3 · Managed |
128B |
9.502 μs |
0.0665 μs |
0.0623 μs |
- |
| AbsorbSqueeze · BLAKE3 · BouncyCastle |
128B |
19.578 μs |
0.1210 μs |
0.1073 μs |
56 B |
|
|
|
|
|
|
| AbsorbSqueeze · BLAKE3 · Native |
1KB |
2.154 μs |
0.0208 μs |
0.0195 μs |
- |
| AbsorbSqueeze · BLAKE3 · Ssse3 |
1KB |
3.223 μs |
0.0126 μs |
0.0112 μs |
- |
| AbsorbSqueeze · BLAKE3 · Managed |
1KB |
13.211 μs |
0.0605 μs |
0.0536 μs |
- |
| AbsorbSqueeze · BLAKE3 · BouncyCastle |
1KB |
28.821 μs |
0.2392 μs |
0.2238 μs |
56 B |
|
|
|
|
|
|
| AbsorbSqueeze · BLAKE3 · Native |
8KB |
6.639 μs |
0.0192 μs |
0.0161 μs |
- |
| AbsorbSqueeze · BLAKE3 · Ssse3 |
8KB |
10.118 μs |
0.0451 μs |
0.0400 μs |
- |
| AbsorbSqueeze · BLAKE3 · Managed |
8KB |
43.075 μs |
0.1989 μs |
0.1763 μs |
- |
| AbsorbSqueeze · BLAKE3 · BouncyCastle |
8KB |
102.746 μs |
0.5135 μs |
0.4552 μs |
56 B |
|
|
|
|
|
|
| AbsorbSqueeze · BLAKE3 · Native |
128KB |
84.740 μs |
1.4031 μs |
1.3780 μs |
- |
| AbsorbSqueeze · BLAKE3 · Ssse3 |
128KB |
128.134 μs |
0.4136 μs |
0.3454 μs |
- |
| AbsorbSqueeze · BLAKE3 · Managed |
128KB |
559.513 μs |
2.9096 μs |
2.7216 μs |
- |
| AbsorbSqueeze · BLAKE3 · BouncyCastle |
128KB |
1,316.753 μs |
10.6814 μs |
9.9914 μs |
56 B |
Ascon-XOF128 XOF
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| AbsorbSqueeze · Ascon-XOF128 · Managed |
128B |
7.910 μs |
0.0443 μs |
0.0592 μs |
- |
| AbsorbSqueeze · Ascon-XOF128 · BouncyCastle |
128B |
10.382 μs |
0.0489 μs |
0.0433 μs |
- |
|
|
|
|
|
|
| AbsorbSqueeze · Ascon-XOF128 · Managed |
1KB |
10.998 μs |
0.0823 μs |
0.0729 μs |
- |
| AbsorbSqueeze · Ascon-XOF128 · BouncyCastle |
1KB |
14.668 μs |
0.0671 μs |
0.0560 μs |
- |
|
|
|
|
|
|
| AbsorbSqueeze · Ascon-XOF128 · Managed |
8KB |
36.626 μs |
0.6365 μs |
1.0808 μs |
- |
| AbsorbSqueeze · Ascon-XOF128 · BouncyCastle |
8KB |
48.784 μs |
0.2752 μs |
0.2440 μs |
- |
|
|
|
|
|
|
| AbsorbSqueeze · Ascon-XOF128 · Managed |
128KB |
468.594 μs |
3.3391 μs |
2.9600 μs |
- |
| AbsorbSqueeze · Ascon-XOF128 · BouncyCastle |
128KB |
636.513 μs |
4.3272 μs |
4.0477 μs |
- |
See also