Readonly span support by ChrisMcKee · Pull Request #252 · BcryptNet/bcrypt.net
``` BenchmarkDotNet v0.15.6, Windows 11 (10.0.26100.6899/24H2/2024Update/HudsonValley) AMD Ryzen 9 9900X 4.40GHz, 1 CPU, 24 logical and 12 physical cores .NET SDK 10.0.100 [Host] : .NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v4 Job-XJDVJN : .NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v4 Job-QQRERM : .NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v4 Job-TDICCM : .NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v4 Job-DYUUZC : .NET 10.0.0 (10.0.0, 10.0.25.52411), X64 RyuJIT x86-64-v4 Job-JIERNF : .NET 8.0.22 (8.0.22, 8.0.2225.52707), X64 RyuJIT x86-64-v4 Job-QBQHGG : .NET 8.0.22 (8.0.22, 8.0.2225.52707), X64 RyuJIT x86-64-v4 Job-NOZKUG : .NET 8.0.22 (8.0.22, 8.0.2225.52707), X64 RyuJIT x86-64-v4 Job-RDWRBK : .NET 8.0.22 (8.0.22, 8.0.2225.52707), X64 RyuJIT x86-64-v4 Job-RDXXZX : .NET Framework 4.8.1 (4.8.9310.0), X64 RyuJIT VectorSize=256 Job-RLXPNS : .NET Framework 4.8.1 (4.8.9310.0), X64 RyuJIT VectorSize=256 Job-XEJGGT : .NET Framework 4.8.1 (4.8.9310.0), X64 RyuJIT VectorSize=256 Job-URTIUT : .NET Framework 4.8.1 (4.8.9310.0), X64 RyuJIT VectorSize=256 Job-TUHZZR : .NET Framework 4.8.1 (4.8.9310.0), X64 RyuJIT VectorSize=256 Job-BXPPFA : .NET Framework 4.8.1 (4.8.9310.0), X64 RyuJIT VectorSize=256 Job-BQPXRF : .NET Framework 4.8.1 (4.8.9310.0), X64 RyuJIT VectorSize=256 Job-RIVHIS : .NET Framework 4.8.1 (4.8.9310.0), X64 RyuJIT VectorSize=256 Job-OVEKXS : .NET Framework 4.8.1 (4.8.9310.0), X64 RyuJIT VectorSize=256 Job-ULWAAK : .NET Framework 4.8.1 (4.8.9310.0), X64 RyuJIT VectorSize=256 Server=True ``` | Method | Runtime | Arguments | key | salt | hash | Mean | Error | StdDev | Rank | Allocated | |----------------- |--------------------- |---------------------------------------------- |--------------------- |--------------------- |--------------------- |----------:|---------:|---------:|-----:|----------:| | **TestHashValidate** | **.NET 10.0** | **/p:BCryptVersion=2.1.4** | **~!@#$(...)NBFRD [34]** | **$2a$1(...)rOvHe [29]** | **$2a$1(...)JYlfS [60]** | **40.43 ms** | **0.689 ms** | **0.644 ms** | **1** | **69.76 KB** | | TestHashValidate | .NET 10.0 | /p:BCryptVersion=3.5.0 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 40.40 ms | 0.396 ms | 0.370 ms | 1 | 5.01 KB | | TestHashValidate | .NET 10.0 | /p:BCryptVersion=4.0.3 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 40.64 ms | 0.620 ms | 0.580 ms | 1 | 5.01 KB | | TestHashValidate | .NET 10.0 | /p:BCryptVersion=5.0.0-prerelease.g5300270033 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 40.15 ms | 0.278 ms | 0.260 ms | 1 | 4.45 KB | | TestHashValidate | .NET 8.0 | /p:BCryptVersion=2.1.4 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 39.95 ms | 0.228 ms | 0.213 ms | 1 | 69.76 KB | | TestHashValidate | .NET 8.0 | /p:BCryptVersion=3.5.0 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 40.42 ms | 0.471 ms | 0.441 ms | 1 | 5.01 KB | | TestHashValidate | .NET 8.0 | /p:BCryptVersion=4.0.3 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 40.50 ms | 0.432 ms | 0.404 ms | 1 | 5.01 KB | | TestHashValidate | .NET 8.0 | /p:BCryptVersion=5.0.0-prerelease.g5300270033 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 40.19 ms | 0.292 ms | 0.273 ms | 1 | 4.45 KB | | TestHashValidate | .NET Framework 4.6.2 | /p:BCryptVersion=2.0.0 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 42.33 ms | 0.481 ms | 0.427 ms | 1 | 70 KB | | TestHashValidate | .NET Framework 4.6.2 | /p:BCryptVersion=2.1.4 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 42.26 ms | 0.336 ms | 0.297 ms | 1 | 69.66 KB | | TestHashValidate | .NET Framework 4.6.2 | /p:BCryptVersion=3.5.0 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 42.39 ms | 0.428 ms | 0.401 ms | 1 | 69.33 KB | | TestHashValidate | .NET Framework 4.6.2 | /p:BCryptVersion=4.0.3 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 42.50 ms | 0.373 ms | 0.349 ms | 1 | 69.33 KB | | TestHashValidate | .NET Framework 4.6.2 | /p:BCryptVersion=5.0.0-prerelease.g5300270033 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 42.56 ms | 0.557 ms | 0.521 ms | 1 | 68.99 KB | | TestHashValidate | .NET Framework 4.8.1 | /p:BCryptVersion=2.0.0 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 43.54 ms | 0.845 ms | 0.940 ms | 1 | 70 KB | | TestHashValidate | .NET Framework 4.8.1 | /p:BCryptVersion=2.1.4 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 44.21 ms | 0.512 ms | 0.478 ms | 1 | 70 KB | | TestHashValidate | .NET Framework 4.8.1 | /p:BCryptVersion=3.5.0 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 44.64 ms | 0.865 ms | 0.997 ms | 1 | 4.67 KB | | TestHashValidate | .NET Framework 4.8.1 | /p:BCryptVersion=4.0.3 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 42.64 ms | 0.314 ms | 0.293 ms | 1 | 4.67 KB | | TestHashValidate | .NET Framework 4.8.1 | /p:BCryptVersion=5.0.0-prerelease.g5300270033 | ~!@#$(...)NBFRD [34] | $2a$1(...)rOvHe [29] | $2a$1(...)JYlfS [60] | 42.59 ms | 0.292 ms | 0.259 ms | 1 | 4.67 KB | | **TestHashValidate** | **.NET 10.0** | **/p:BCryptVersion=2.1.4** | **~!@#$(...)NBFRD [34]** | **$2a$1(...)nkrPO [29]** | **$2a$1(...)eyhgC [60]** | **160.46 ms** | **1.088 ms** | **0.964 ms** | **2** | **261.76 KB** | | TestHashValidate | .NET 10.0 | /p:BCryptVersion=3.5.0 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 160.22 ms | 0.962 ms | 0.900 ms | 2 | 5.01 KB | | TestHashValidate | .NET 10.0 | /p:BCryptVersion=4.0.3 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 160.37 ms | 0.645 ms | 0.572 ms | 2 | 5.01 KB | | TestHashValidate | .NET 10.0 | /p:BCryptVersion=5.0.0-prerelease.g5300270033 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 160.95 ms | 1.437 ms | 1.274 ms | 2 | 4.45 KB | | TestHashValidate | .NET 8.0 | /p:BCryptVersion=2.1.4 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 162.36 ms | 3.214 ms | 3.439 ms | 2 | 261.76 KB | | TestHashValidate | .NET 8.0 | /p:BCryptVersion=3.5.0 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 160.75 ms | 0.941 ms | 0.786 ms | 2 | 5.01 KB | | TestHashValidate | .NET 8.0 | /p:BCryptVersion=4.0.3 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 160.83 ms | 1.753 ms | 1.554 ms | 2 | 5.01 KB | | TestHashValidate | .NET 8.0 | /p:BCryptVersion=5.0.0-prerelease.g5300270033 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 160.47 ms | 1.143 ms | 0.955 ms | 2 | 4.45 KB | | TestHashValidate | .NET Framework 4.6.2 | /p:BCryptVersion=2.0.0 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 170.28 ms | 2.024 ms | 1.893 ms | 2 | 261.33 KB | | TestHashValidate | .NET Framework 4.6.2 | /p:BCryptVersion=2.1.4 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 169.68 ms | 1.650 ms | 1.543 ms | 2 | 261.33 KB | | TestHashValidate | .NET Framework 4.6.2 | /p:BCryptVersion=3.5.0 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 168.60 ms | 1.189 ms | 1.112 ms | 2 | 262.21 KB | | TestHashValidate | .NET Framework 4.6.2 | /p:BCryptVersion=4.0.3 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 169.15 ms | 1.267 ms | 1.185 ms | 2 | 261.33 KB | | TestHashValidate | .NET Framework 4.6.2 | /p:BCryptVersion=5.0.0-prerelease.g5300270033 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 169.73 ms | 2.048 ms | 1.916 ms | 2 | 261.33 KB | | TestHashValidate | .NET Framework 4.8.1 | /p:BCryptVersion=2.0.0 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 169.54 ms | 2.082 ms | 1.948 ms | 2 | 261.33 KB | | TestHashValidate | .NET Framework 4.8.1 | /p:BCryptVersion=2.1.4 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 169.22 ms | 1.691 ms | 1.499 ms | 2 | 261.33 KB | | TestHashValidate | .NET Framework 4.8.1 | /p:BCryptVersion=3.5.0 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 169.25 ms | 1.372 ms | 1.217 ms | 2 | 5.33 KB | | TestHashValidate | .NET Framework 4.8.1 | /p:BCryptVersion=4.0.3 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 172.02 ms | 3.346 ms | 3.436 ms | 2 | 5.33 KB | | TestHashValidate | .NET Framework 4.8.1 | /p:BCryptVersion=5.0.0-prerelease.g5300270033 | ~!@#$(...)NBFRD [34] | $2a$1(...)nkrPO [29] | $2a$1(...)eyhgC [60] | 173.11 ms | 3.154 ms | 3.375 ms | 2 | 5.33 KB |