From bf6026913ce1b53687fcd843c780a4fc8cad3368 Mon Sep 17 00:00:00 2001 From: mkjeff Date: Wed, 3 Jan 2024 15:13:17 +0800 Subject: [PATCH] added Microsoft.CodeCoverage reference --- .github/workflows/dotnet.yml | 2 + ...s.ComplexItemEncodeDecode-report-github.md | 28 +- ...nchmarks.ItemEncodeDecode-report-github.md | 244 +++++++++--------- ...chmarks.JsonSerialization-report-github.md | 28 +- .../Benchmarks.PipeDecoding-report-github.md | 16 +- ...enchmarks.RequestResponse-report-github.md | 30 +-- ...chmarks.ReverseEndianness-report-github.md | 150 +++++------ ...nchmarks.SmlSerialization-report-github.md | 28 +- test/Benchmarks/ReverseEndianness.cs | 2 +- .../Secs4Net.Json.UnitTests.csproj | 5 +- .../Secs4Net.Sml.UnitTests.csproj | 5 +- .../Secs4Net.UnitTests.csproj | 7 +- 12 files changed, 270 insertions(+), 275 deletions(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 9cc6525..eb63813 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -26,6 +26,8 @@ jobs: run: dotnet build --no-restore - name: Test run: dotnet test --no-build --verbosity normal + - name: Generate code coverage + run: dotnet test --collect "Code Coverage" - name: Pack run: dotnet pack -c Release - name: Push diff --git a/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.ComplexItemEncodeDecode-report-github.md b/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.ComplexItemEncodeDecode-report-github.md index 3e10146..43094e9 100644 --- a/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.ComplexItemEncodeDecode-report-github.md +++ b/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.ComplexItemEncodeDecode-report-github.md @@ -4,27 +4,27 @@ BenchmarkDotNet v0.13.10, Windows 11 (10.0.22631.2861/23H2/2023Update/SunValley3 Unknown processor .NET SDK 8.0.100 [Host] : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 - Job-ZQSTYQ : .NET 6.0.25 (6.0.2523.51912), X64 RyuJIT AVX2 - Job-LEHGCO : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 + Job-LLCSMO : .NET 6.0.25 (6.0.2523.51912), X64 RyuJIT AVX2 + Job-LSZLMA : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 ``` | Method | Runtime | ItemCount | Mean | Error | StdDev | Ratio | RatioSD | Allocated | Alloc Ratio | |------- |--------- |---------- |-----------:|---------:|---------:|-------------:|--------:|----------:|------------:| -| **Encode** | **.NET 6.0** | **0** | **170.0 ns** | **1.41 ns** | **1.32 ns** | **baseline** | **** | **40 B** | **** | -| Encode | .NET 8.0 | 0 | 119.0 ns | 0.81 ns | 0.76 ns | 1.43x faster | 0.01x | 40 B | 1.00x more | +| **Encode** | **.NET 6.0** | **0** | **198.8 ns** | **1.90 ns** | **1.69 ns** | **baseline** | **** | **40 B** | **** | +| Encode | .NET 8.0 | 0 | 122.2 ns | 2.41 ns | 2.13 ns | 1.63x faster | 0.03x | 40 B | 1.00x more | | | | | | | | | | | | -| Decode | .NET 6.0 | 0 | 1,454.1 ns | 5.72 ns | 5.07 ns | baseline | | 1736 B | | -| Decode | .NET 8.0 | 0 | 1,222.6 ns | 7.04 ns | 6.24 ns | 1.19x faster | 0.01x | 1736 B | 1.00x more | +| Decode | .NET 6.0 | 0 | 1,411.0 ns | 19.15 ns | 16.97 ns | baseline | | 560 B | | +| Decode | .NET 8.0 | 0 | 1,269.6 ns | 21.72 ns | 20.32 ns | 1.11x faster | 0.02x | 560 B | 1.00x more | | | | | | | | | | | | -| **Encode** | **.NET 6.0** | **64** | **696.5 ns** | **3.40 ns** | **3.18 ns** | **baseline** | **** | **40 B** | **** | -| Encode | .NET 8.0 | 64 | 591.7 ns | 5.49 ns | 5.13 ns | 1.18x faster | 0.01x | 40 B | 1.00x more | +| **Encode** | **.NET 6.0** | **64** | **731.4 ns** | **8.99 ns** | **7.97 ns** | **baseline** | **** | **40 B** | **** | +| Encode | .NET 8.0 | 64 | 559.5 ns | 10.67 ns | 11.42 ns | 1.30x faster | 0.03x | 40 B | 1.00x more | | | | | | | | | | | | -| Decode | .NET 6.0 | 64 | 2,560.5 ns | 11.05 ns | 10.34 ns | baseline | | 7248 B | | -| Decode | .NET 8.0 | 64 | 2,309.8 ns | 8.78 ns | 7.78 ns | 1.11x faster | 0.01x | 7248 B | 1.00x more | +| Decode | .NET 6.0 | 64 | 2,685.3 ns | 41.63 ns | 36.90 ns | baseline | | 7248 B | | +| Decode | .NET 8.0 | 64 | 2,499.6 ns | 36.32 ns | 32.20 ns | 1.07x faster | 0.02x | 7248 B | 1.00x more | | | | | | | | | | | | -| **Encode** | **.NET 6.0** | **128** | **1,086.3 ns** | **5.70 ns** | **5.34 ns** | **baseline** | **** | **40 B** | **** | -| Encode | .NET 8.0 | 128 | 919.0 ns | 5.88 ns | 4.91 ns | 1.18x faster | 0.01x | 40 B | 1.00x more | +| **Encode** | **.NET 6.0** | **128** | **1,127.0 ns** | **19.01 ns** | **17.78 ns** | **baseline** | **** | **40 B** | **** | +| Encode | .NET 8.0 | 128 | 956.6 ns | 12.05 ns | 9.41 ns | 1.17x faster | 0.02x | 40 B | 1.00x more | | | | | | | | | | | | -| Decode | .NET 6.0 | 128 | 3,080.1 ns | 7.82 ns | 6.93 ns | baseline | | 9112 B | | -| Decode | .NET 8.0 | 128 | 2,786.5 ns | 15.24 ns | 14.25 ns | 1.11x faster | 0.01x | 9112 B | 1.00x more | +| Decode | .NET 6.0 | 128 | 3,297.3 ns | 41.69 ns | 36.96 ns | baseline | | 9112 B | | +| Decode | .NET 8.0 | 128 | 3,107.9 ns | 44.40 ns | 39.36 ns | 1.06x faster | 0.01x | 9112 B | 1.00x more | diff --git a/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.ItemEncodeDecode-report-github.md b/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.ItemEncodeDecode-report-github.md index e3c19bf..cc2f99d 100644 --- a/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.ItemEncodeDecode-report-github.md +++ b/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.ItemEncodeDecode-report-github.md @@ -4,189 +4,189 @@ BenchmarkDotNet v0.13.10, Windows 11 (10.0.22631.2861/23H2/2023Update/SunValley3 Unknown processor .NET SDK 8.0.100 [Host] : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 - Job-ZQSTYQ : .NET 6.0.25 (6.0.2523.51912), X64 RyuJIT AVX2 - Job-LEHGCO : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 + Job-LLCSMO : .NET 6.0.25 (6.0.2523.51912), X64 RyuJIT AVX2 + Job-LSZLMA : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 ``` | Method | Runtime | Size | Format | Mean | Error | StdDev | Ratio | RatioSD | Allocated | Alloc Ratio | |--------------------- |--------- |----- |-------- |-------------:|-----------:|-----------:|-------------:|--------:|----------:|------------:| -| **EncodeTo** | **.NET 6.0** | **0** | **List** | **15.91 ns** | **0.084 ns** | **0.074 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 0 | List | 15.22 ns | 0.104 ns | 0.097 ns | 1.05x faster | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **0** | **List** | **16.77 ns** | **0.275 ns** | **0.258 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 0 | List | 16.38 ns | 0.309 ns | 0.289 ns | 1.02x faster | 0.03x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 0 | List | 34.93 ns | 0.366 ns | 0.342 ns | baseline | | - | NA | -| DecodeFromFullBuffer | .NET 8.0 | 0 | List | 24.03 ns | 0.174 ns | 0.163 ns | 1.45x faster | 0.02x | - | NA | +| DecodeFromFullBuffer | .NET 6.0 | 0 | List | 37.72 ns | 0.772 ns | 0.758 ns | baseline | | - | NA | +| DecodeFromFullBuffer | .NET 8.0 | 0 | List | 26.38 ns | 0.468 ns | 0.438 ns | 1.43x faster | 0.04x | - | NA | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **0** | **Binary** | **16.45 ns** | **0.224 ns** | **0.198 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 0 | Binary | 15.73 ns | 0.071 ns | 0.066 ns | 1.05x faster | 0.02x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **0** | **Binary** | **17.49 ns** | **0.369 ns** | **0.379 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 0 | Binary | 16.71 ns | 0.213 ns | 0.178 ns | 1.05x faster | 0.03x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 0 | Binary | 43.66 ns | 0.161 ns | 0.150 ns | baseline | | 40 B | | -| DecodeFromFullBuffer | .NET 8.0 | 0 | Binary | 33.65 ns | 0.159 ns | 0.148 ns | 1.30x faster | 0.01x | 40 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 0 | Binary | 47.47 ns | 0.907 ns | 0.757 ns | baseline | | - | NA | +| DecodeFromFullBuffer | .NET 8.0 | 0 | Binary | 34.58 ns | 0.658 ns | 0.616 ns | 1.37x faster | 0.03x | - | NA | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **0** | **Boolean** | **16.47 ns** | **0.047 ns** | **0.041 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 0 | Boolean | 15.78 ns | 0.037 ns | 0.035 ns | 1.04x faster | 0.00x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **0** | **Boolean** | **17.39 ns** | **0.283 ns** | **0.251 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 0 | Boolean | 16.82 ns | 0.315 ns | 0.295 ns | 1.04x faster | 0.02x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 0 | Boolean | 46.12 ns | 0.070 ns | 0.062 ns | baseline | | 40 B | | -| DecodeFromFullBuffer | .NET 8.0 | 0 | Boolean | 33.16 ns | 0.077 ns | 0.068 ns | 1.39x faster | 0.00x | 40 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 0 | Boolean | 49.14 ns | 0.914 ns | 0.855 ns | baseline | | - | NA | +| DecodeFromFullBuffer | .NET 8.0 | 0 | Boolean | 35.86 ns | 0.599 ns | 0.560 ns | 1.37x faster | 0.03x | - | NA | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **0** | **ASCII** | **16.59 ns** | **0.048 ns** | **0.037 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 0 | ASCII | 15.61 ns | 0.332 ns | 0.294 ns | 1.06x faster | 0.02x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **0** | **ASCII** | **17.60 ns** | **0.237 ns** | **0.210 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 0 | ASCII | 16.35 ns | 0.291 ns | 0.273 ns | 1.08x faster | 0.03x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 0 | ASCII | 45.85 ns | 0.161 ns | 0.142 ns | baseline | | 32 B | | -| DecodeFromFullBuffer | .NET 8.0 | 0 | ASCII | 35.36 ns | 0.109 ns | 0.102 ns | 1.30x faster | 0.01x | 32 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 0 | ASCII | 50.41 ns | 0.783 ns | 0.732 ns | baseline | | - | NA | +| DecodeFromFullBuffer | .NET 8.0 | 0 | ASCII | 34.18 ns | 0.462 ns | 0.386 ns | 1.47x faster | 0.03x | - | NA | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **0** | **JIS8** | **16.56 ns** | **0.032 ns** | **0.027 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 0 | JIS8 | 15.36 ns | 0.067 ns | 0.062 ns | 1.08x faster | 0.00x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **0** | **JIS8** | **17.75 ns** | **0.357 ns** | **0.366 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 0 | JIS8 | 16.53 ns | 0.355 ns | 0.332 ns | 1.07x faster | 0.04x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 0 | JIS8 | 49.61 ns | 0.180 ns | 0.168 ns | baseline | | 32 B | | -| DecodeFromFullBuffer | .NET 8.0 | 0 | JIS8 | 34.24 ns | 0.426 ns | 0.399 ns | 1.45x faster | 0.02x | 32 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 0 | JIS8 | 49.93 ns | 0.639 ns | 0.566 ns | baseline | | - | NA | +| DecodeFromFullBuffer | .NET 8.0 | 0 | JIS8 | 34.58 ns | 0.692 ns | 0.741 ns | 1.44x faster | 0.04x | - | NA | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **0** | **I8** | **16.37 ns** | **0.088 ns** | **0.082 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 0 | I8 | 15.74 ns | 0.093 ns | 0.087 ns | 1.04x faster | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **0** | **I8** | **17.49 ns** | **0.171 ns** | **0.143 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 0 | I8 | 16.89 ns | 0.351 ns | 0.329 ns | 1.04x faster | 0.02x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 0 | I8 | 46.16 ns | 0.262 ns | 0.232 ns | baseline | | 40 B | | -| DecodeFromFullBuffer | .NET 8.0 | 0 | I8 | 34.12 ns | 0.269 ns | 0.251 ns | 1.35x faster | 0.01x | 40 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 0 | I8 | 49.03 ns | 0.995 ns | 1.064 ns | baseline | | - | NA | +| DecodeFromFullBuffer | .NET 8.0 | 0 | I8 | 37.19 ns | 0.539 ns | 0.478 ns | 1.33x faster | 0.02x | - | NA | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **0** | **I1** | **16.39 ns** | **0.089 ns** | **0.083 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 0 | I1 | 15.71 ns | 0.100 ns | 0.089 ns | 1.04x faster | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **0** | **I1** | **17.44 ns** | **0.283 ns** | **0.264 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 0 | I1 | 16.89 ns | 0.358 ns | 0.367 ns | 1.03x faster | 0.03x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 0 | I1 | 45.42 ns | 0.147 ns | 0.131 ns | baseline | | 40 B | | -| DecodeFromFullBuffer | .NET 8.0 | 0 | I1 | 32.55 ns | 0.216 ns | 0.202 ns | 1.39x faster | 0.01x | 40 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 0 | I1 | 49.43 ns | 0.846 ns | 0.791 ns | baseline | | - | NA | +| DecodeFromFullBuffer | .NET 8.0 | 0 | I1 | 33.81 ns | 0.576 ns | 0.565 ns | 1.46x faster | 0.04x | - | NA | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **0** | **I2** | **16.39 ns** | **0.030 ns** | **0.025 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 0 | I2 | 15.76 ns | 0.035 ns | 0.033 ns | 1.04x faster | 0.00x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **0** | **I2** | **17.44 ns** | **0.343 ns** | **0.304 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 0 | I2 | 16.73 ns | 0.255 ns | 0.226 ns | 1.04x faster | 0.02x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 0 | I2 | 48.23 ns | 0.121 ns | 0.101 ns | baseline | | 40 B | | -| DecodeFromFullBuffer | .NET 8.0 | 0 | I2 | 34.74 ns | 0.065 ns | 0.061 ns | 1.39x faster | 0.00x | 40 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 0 | I2 | 49.54 ns | 0.736 ns | 0.688 ns | baseline | | - | NA | +| DecodeFromFullBuffer | .NET 8.0 | 0 | I2 | 34.84 ns | 0.529 ns | 0.494 ns | 1.42x faster | 0.03x | - | NA | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **0** | **I4** | **16.43 ns** | **0.031 ns** | **0.024 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 0 | I4 | 15.73 ns | 0.094 ns | 0.088 ns | 1.05x faster | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **0** | **I4** | **17.47 ns** | **0.254 ns** | **0.225 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 0 | I4 | 16.64 ns | 0.307 ns | 0.287 ns | 1.05x faster | 0.03x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 0 | I4 | 47.01 ns | 0.227 ns | 0.202 ns | baseline | | 40 B | | -| DecodeFromFullBuffer | .NET 8.0 | 0 | I4 | 33.75 ns | 0.378 ns | 0.354 ns | 1.39x faster | 0.01x | 40 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 0 | I4 | 48.29 ns | 0.809 ns | 0.757 ns | baseline | | - | NA | +| DecodeFromFullBuffer | .NET 8.0 | 0 | I4 | 35.75 ns | 0.703 ns | 0.657 ns | 1.35x faster | 0.03x | - | NA | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **0** | **F8** | **16.39 ns** | **0.060 ns** | **0.053 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 0 | F8 | 16.02 ns | 0.090 ns | 0.079 ns | 1.02x faster | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **0** | **F8** | **17.51 ns** | **0.361 ns** | **0.386 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 0 | F8 | 16.71 ns | 0.198 ns | 0.166 ns | 1.05x faster | 0.02x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 0 | F8 | 46.61 ns | 0.235 ns | 0.208 ns | baseline | | 40 B | | -| DecodeFromFullBuffer | .NET 8.0 | 0 | F8 | 33.09 ns | 0.097 ns | 0.086 ns | 1.41x faster | 0.01x | 40 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 0 | F8 | 51.62 ns | 0.615 ns | 0.576 ns | baseline | | - | NA | +| DecodeFromFullBuffer | .NET 8.0 | 0 | F8 | 34.24 ns | 0.439 ns | 0.410 ns | 1.51x faster | 0.02x | - | NA | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **0** | **F4** | **16.53 ns** | **0.261 ns** | **0.244 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 0 | F4 | 15.85 ns | 0.065 ns | 0.054 ns | 1.04x faster | 0.02x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **0** | **F4** | **17.35 ns** | **0.238 ns** | **0.211 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 0 | F4 | 16.89 ns | 0.348 ns | 0.372 ns | 1.03x faster | 0.03x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 0 | F4 | 47.75 ns | 0.220 ns | 0.206 ns | baseline | | 40 B | | -| DecodeFromFullBuffer | .NET 8.0 | 0 | F4 | 34.30 ns | 0.293 ns | 0.274 ns | 1.39x faster | 0.01x | 40 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 0 | F4 | 52.30 ns | 0.728 ns | 0.681 ns | baseline | | - | NA | +| DecodeFromFullBuffer | .NET 8.0 | 0 | F4 | 34.76 ns | 0.426 ns | 0.332 ns | 1.50x faster | 0.03x | - | NA | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **0** | **U8** | **16.40 ns** | **0.109 ns** | **0.102 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 0 | U8 | 15.73 ns | 0.080 ns | 0.075 ns | 1.04x faster | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **0** | **U8** | **17.40 ns** | **0.341 ns** | **0.303 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 0 | U8 | 16.75 ns | 0.320 ns | 0.300 ns | 1.04x faster | 0.03x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 0 | U8 | 47.39 ns | 0.332 ns | 0.277 ns | baseline | | 40 B | | -| DecodeFromFullBuffer | .NET 8.0 | 0 | U8 | 33.77 ns | 0.124 ns | 0.116 ns | 1.40x faster | 0.01x | 40 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 0 | U8 | 51.36 ns | 0.929 ns | 0.869 ns | baseline | | - | NA | +| DecodeFromFullBuffer | .NET 8.0 | 0 | U8 | 35.98 ns | 0.556 ns | 0.492 ns | 1.43x faster | 0.03x | - | NA | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **0** | **U1** | **16.43 ns** | **0.083 ns** | **0.073 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 0 | U1 | 15.74 ns | 0.027 ns | 0.025 ns | 1.04x faster | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **0** | **U1** | **17.54 ns** | **0.275 ns** | **0.243 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 0 | U1 | 16.82 ns | 0.357 ns | 0.351 ns | 1.04x faster | 0.03x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 0 | U1 | 47.06 ns | 0.295 ns | 0.246 ns | baseline | | 40 B | | -| DecodeFromFullBuffer | .NET 8.0 | 0 | U1 | 33.75 ns | 0.145 ns | 0.136 ns | 1.39x faster | 0.01x | 40 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 0 | U1 | 50.16 ns | 1.024 ns | 0.958 ns | baseline | | - | NA | +| DecodeFromFullBuffer | .NET 8.0 | 0 | U1 | 36.12 ns | 0.696 ns | 0.651 ns | 1.39x faster | 0.04x | - | NA | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **0** | **U2** | **16.40 ns** | **0.063 ns** | **0.056 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 0 | U2 | 15.79 ns | 0.063 ns | 0.056 ns | 1.04x faster | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **0** | **U2** | **17.47 ns** | **0.309 ns** | **0.289 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 0 | U2 | 16.66 ns | 0.311 ns | 0.276 ns | 1.05x faster | 0.03x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 0 | U2 | 46.92 ns | 0.146 ns | 0.137 ns | baseline | | 40 B | | -| DecodeFromFullBuffer | .NET 8.0 | 0 | U2 | 35.08 ns | 0.248 ns | 0.194 ns | 1.34x faster | 0.01x | 40 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 0 | U2 | 52.18 ns | 0.791 ns | 0.740 ns | baseline | | - | NA | +| DecodeFromFullBuffer | .NET 8.0 | 0 | U2 | 34.57 ns | 0.566 ns | 0.529 ns | 1.51x faster | 0.03x | - | NA | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **0** | **U4** | **16.39 ns** | **0.077 ns** | **0.068 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 0 | U4 | 15.71 ns | 0.084 ns | 0.070 ns | 1.04x faster | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **0** | **U4** | **17.39 ns** | **0.264 ns** | **0.234 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 0 | U4 | 16.68 ns | 0.239 ns | 0.200 ns | 1.04x faster | 0.02x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 0 | U4 | 46.90 ns | 0.191 ns | 0.179 ns | baseline | | 40 B | | -| DecodeFromFullBuffer | .NET 8.0 | 0 | U4 | 34.79 ns | 0.369 ns | 0.345 ns | 1.35x faster | 0.02x | 40 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 0 | U4 | 49.80 ns | 0.416 ns | 0.389 ns | baseline | | - | NA | +| DecodeFromFullBuffer | .NET 8.0 | 0 | U4 | 34.39 ns | 0.455 ns | 0.355 ns | 1.45x faster | 0.02x | - | NA | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **1024** | **List** | **4,701.78 ns** | **19.251 ns** | **17.066 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 1024 | List | 2,972.33 ns | 21.749 ns | 20.344 ns | 1.58x faster | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **1024** | **List** | **4,905.33 ns** | **68.504 ns** | **64.079 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 1024 | List | 3,114.26 ns | 42.277 ns | 39.546 ns | 1.58x faster | 0.03x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 1024 | List | 25,983.64 ns | 213.169 ns | 199.399 ns | baseline | | 8248 B | | -| DecodeFromFullBuffer | .NET 8.0 | 1024 | List | 22,217.64 ns | 85.419 ns | 75.722 ns | 1.17x faster | 0.01x | 8248 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 1024 | List | 28,417.57 ns | 337.282 ns | 315.494 ns | baseline | | 8248 B | | +| DecodeFromFullBuffer | .NET 8.0 | 1024 | List | 23,938.12 ns | 297.550 ns | 248.468 ns | 1.19x faster | 0.01x | 8248 B | 1.00x more | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **1024** | **Binary** | **30.17 ns** | **0.138 ns** | **0.129 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 1024 | Binary | 29.68 ns | 0.143 ns | 0.111 ns | 1.02x faster | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **1024** | **Binary** | **32.14 ns** | **0.534 ns** | **0.474 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 1024 | Binary | 30.77 ns | 0.631 ns | 0.619 ns | 1.05x faster | 0.03x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 1024 | Binary | 78.02 ns | 0.533 ns | 0.416 ns | baseline | | 88 B | | -| DecodeFromFullBuffer | .NET 8.0 | 1024 | Binary | 63.45 ns | 0.106 ns | 0.099 ns | 1.23x faster | 0.01x | 88 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 1024 | Binary | 81.84 ns | 1.579 ns | 1.622 ns | baseline | | 88 B | | +| DecodeFromFullBuffer | .NET 8.0 | 1024 | Binary | 68.09 ns | 1.308 ns | 1.343 ns | 1.20x faster | 0.03x | 88 B | 1.00x more | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **1024** | **Boolean** | **30.73 ns** | **0.023 ns** | **0.018 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 1024 | Boolean | 29.45 ns | 0.033 ns | 0.031 ns | 1.04x faster | 0.00x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **1024** | **Boolean** | **31.88 ns** | **0.642 ns** | **0.834 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 1024 | Boolean | 31.29 ns | 0.615 ns | 0.604 ns | 1.02x faster | 0.05x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 1024 | Boolean | 79.69 ns | 0.492 ns | 0.460 ns | baseline | | 88 B | | -| DecodeFromFullBuffer | .NET 8.0 | 1024 | Boolean | 66.41 ns | 0.205 ns | 0.160 ns | 1.20x faster | 0.01x | 88 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 1024 | Boolean | 78.75 ns | 1.543 ns | 1.651 ns | baseline | | 88 B | | +| DecodeFromFullBuffer | .NET 8.0 | 1024 | Boolean | 66.20 ns | 1.303 ns | 1.448 ns | 1.19x faster | 0.04x | 88 B | 1.00x more | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **1024** | **ASCII** | **56.58 ns** | **0.265 ns** | **0.235 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 1024 | ASCII | 45.33 ns | 0.055 ns | 0.049 ns | 1.25x faster | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **1024** | **ASCII** | **55.39 ns** | **0.557 ns** | **0.494 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 1024 | ASCII | 48.79 ns | 0.882 ns | 0.825 ns | 1.14x faster | 0.02x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 1024 | ASCII | 208.66 ns | 0.595 ns | 0.557 ns | baseline | | 2256 B | | -| DecodeFromFullBuffer | .NET 8.0 | 1024 | ASCII | 182.33 ns | 0.683 ns | 0.570 ns | 1.14x faster | 0.00x | 2256 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 1024 | ASCII | 219.11 ns | 2.538 ns | 2.374 ns | baseline | | 2256 B | | +| DecodeFromFullBuffer | .NET 8.0 | 1024 | ASCII | 197.72 ns | 2.345 ns | 2.079 ns | 1.11x faster | 0.02x | 2256 B | 1.00x more | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **1024** | **JIS8** | **6,160.21 ns** | **30.715 ns** | **27.228 ns** | **baseline** | **** | **488 B** | **** | -| EncodeTo | .NET 8.0 | 1024 | JIS8 | 4,850.19 ns | 34.772 ns | 32.525 ns | 1.27x faster | 0.01x | 488 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **1024** | **JIS8** | **6,396.98 ns** | **72.253 ns** | **64.051 ns** | **baseline** | **** | **488 B** | **** | +| EncodeTo | .NET 8.0 | 1024 | JIS8 | 5,025.75 ns | 62.058 ns | 55.013 ns | 1.27x faster | 0.02x | 488 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 1024 | JIS8 | 3,344.98 ns | 20.038 ns | 18.744 ns | baseline | | 2704 B | | -| DecodeFromFullBuffer | .NET 8.0 | 1024 | JIS8 | 3,170.70 ns | 17.796 ns | 13.894 ns | 1.05x faster | 0.01x | 2720 B | 1.01x more | +| DecodeFromFullBuffer | .NET 6.0 | 1024 | JIS8 | 3,547.04 ns | 47.007 ns | 43.970 ns | baseline | | 2704 B | | +| DecodeFromFullBuffer | .NET 8.0 | 1024 | JIS8 | 3,355.02 ns | 42.926 ns | 38.053 ns | 1.06x faster | 0.02x | 2720 B | 1.01x more | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **1024** | **I8** | **299.33 ns** | **1.501 ns** | **1.253 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 1024 | I8 | 314.96 ns | 1.653 ns | 1.465 ns | 1.05x slower | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **1024** | **I8** | **314.85 ns** | **6.263 ns** | **6.151 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 1024 | I8 | 331.70 ns | 5.138 ns | 4.806 ns | 1.05x slower | 0.02x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 1024 | I8 | 351.44 ns | 2.292 ns | 2.144 ns | baseline | | 88 B | | -| DecodeFromFullBuffer | .NET 8.0 | 1024 | I8 | 335.79 ns | 2.277 ns | 2.130 ns | 1.05x faster | 0.01x | 88 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 1024 | I8 | 369.01 ns | 4.494 ns | 3.984 ns | baseline | | 88 B | | +| DecodeFromFullBuffer | .NET 8.0 | 1024 | I8 | 374.90 ns | 7.077 ns | 6.273 ns | 1.02x slower | 0.01x | 88 B | 1.00x more | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **1024** | **I1** | **30.91 ns** | **0.250 ns** | **0.333 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 1024 | I1 | 29.59 ns | 0.147 ns | 0.138 ns | 1.05x faster | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **1024** | **I1** | **32.33 ns** | **0.626 ns** | **0.721 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 1024 | I1 | 30.61 ns | 0.623 ns | 0.718 ns | 1.06x faster | 0.04x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 1024 | I1 | 77.39 ns | 0.305 ns | 0.270 ns | baseline | | 88 B | | -| DecodeFromFullBuffer | .NET 8.0 | 1024 | I1 | 63.25 ns | 0.127 ns | 0.113 ns | 1.22x faster | 0.01x | 88 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 1024 | I1 | 83.86 ns | 1.398 ns | 1.308 ns | baseline | | 88 B | | +| DecodeFromFullBuffer | .NET 8.0 | 1024 | I1 | 70.22 ns | 1.349 ns | 1.195 ns | 1.20x faster | 0.03x | 88 B | 1.00x more | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **1024** | **I2** | **269.29 ns** | **0.366 ns** | **0.342 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 1024 | I2 | 285.53 ns | 0.470 ns | 0.416 ns | 1.06x slower | 0.00x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **1024** | **I2** | **284.00 ns** | **3.859 ns** | **3.609 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 1024 | I2 | 402.81 ns | 2.479 ns | 2.070 ns | 1.42x slower | 0.02x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 1024 | I2 | 314.29 ns | 1.416 ns | 1.182 ns | baseline | | 88 B | | -| DecodeFromFullBuffer | .NET 8.0 | 1024 | I2 | 302.35 ns | 0.432 ns | 0.383 ns | 1.04x faster | 0.00x | 88 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 1024 | I2 | 330.68 ns | 4.001 ns | 3.547 ns | baseline | | 88 B | | +| DecodeFromFullBuffer | .NET 8.0 | 1024 | I2 | 317.98 ns | 5.890 ns | 5.510 ns | 1.04x faster | 0.02x | 88 B | 1.00x more | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **1024** | **I4** | **267.73 ns** | **0.511 ns** | **0.399 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 1024 | I4 | 277.51 ns | 1.800 ns | 1.683 ns | 1.04x slower | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **1024** | **I4** | **277.70 ns** | **3.643 ns** | **3.042 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 1024 | I4 | 294.26 ns | 4.617 ns | 4.092 ns | 1.06x slower | 0.02x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 1024 | I4 | 318.58 ns | 0.372 ns | 0.348 ns | baseline | | 88 B | | -| DecodeFromFullBuffer | .NET 8.0 | 1024 | I4 | 304.54 ns | 1.485 ns | 1.389 ns | 1.05x faster | 0.00x | 88 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 1024 | I4 | 335.73 ns | 6.708 ns | 6.588 ns | baseline | | 88 B | | +| DecodeFromFullBuffer | .NET 8.0 | 1024 | I4 | 323.52 ns | 5.741 ns | 5.638 ns | 1.04x faster | 0.02x | 88 B | 1.00x more | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **1024** | **F8** | **368.23 ns** | **1.535 ns** | **1.436 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 1024 | F8 | 379.01 ns | 3.511 ns | 3.113 ns | 1.03x slower | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **1024** | **F8** | **386.35 ns** | **5.085 ns** | **4.757 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 1024 | F8 | 399.43 ns | 3.466 ns | 2.894 ns | 1.03x slower | 0.01x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 1024 | F8 | 427.49 ns | 0.834 ns | 0.739 ns | baseline | | 88 B | | -| DecodeFromFullBuffer | .NET 8.0 | 1024 | F8 | 405.93 ns | 1.267 ns | 1.123 ns | 1.05x faster | 0.00x | 88 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 1024 | F8 | 443.57 ns | 3.806 ns | 3.179 ns | baseline | | 88 B | | +| DecodeFromFullBuffer | .NET 8.0 | 1024 | F8 | 427.17 ns | 5.593 ns | 4.958 ns | 1.04x faster | 0.01x | 88 B | 1.00x more | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **1024** | **F4** | **319.36 ns** | **2.029 ns** | **1.898 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 1024 | F4 | 314.65 ns | 1.831 ns | 1.623 ns | 1.02x faster | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **1024** | **F4** | **334.89 ns** | **4.712 ns** | **4.408 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 1024 | F4 | 334.43 ns | 4.804 ns | 4.494 ns | 1.00x faster | 0.02x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 1024 | F4 | 365.30 ns | 2.807 ns | 2.625 ns | baseline | | 88 B | | -| DecodeFromFullBuffer | .NET 8.0 | 1024 | F4 | 343.42 ns | 2.103 ns | 1.756 ns | 1.06x faster | 0.01x | 88 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 1024 | F4 | 392.34 ns | 5.457 ns | 4.838 ns | baseline | | 88 B | | +| DecodeFromFullBuffer | .NET 8.0 | 1024 | F4 | 362.48 ns | 5.154 ns | 4.569 ns | 1.08x faster | 0.02x | 88 B | 1.00x more | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **1024** | **U8** | **298.55 ns** | **1.101 ns** | **0.920 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 1024 | U8 | 313.03 ns | 0.391 ns | 0.327 ns | 1.05x slower | 0.00x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **1024** | **U8** | **313.50 ns** | **4.959 ns** | **4.396 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 1024 | U8 | 329.08 ns | 4.563 ns | 4.045 ns | 1.05x slower | 0.02x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 1024 | U8 | 348.32 ns | 1.508 ns | 1.337 ns | baseline | | 88 B | | -| DecodeFromFullBuffer | .NET 8.0 | 1024 | U8 | 336.49 ns | 1.384 ns | 1.227 ns | 1.04x faster | 0.01x | 88 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 1024 | U8 | 369.20 ns | 4.598 ns | 3.839 ns | baseline | | 88 B | | +| DecodeFromFullBuffer | .NET 8.0 | 1024 | U8 | 359.26 ns | 7.179 ns | 6.715 ns | 1.03x faster | 0.03x | 88 B | 1.00x more | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **1024** | **U1** | **30.55 ns** | **0.129 ns** | **0.115 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 1024 | U1 | 28.97 ns | 0.212 ns | 0.199 ns | 1.05x faster | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **1024** | **U1** | **32.25 ns** | **0.653 ns** | **0.642 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 1024 | U1 | 30.64 ns | 0.589 ns | 0.578 ns | 1.05x faster | 0.03x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 1024 | U1 | 77.68 ns | 0.294 ns | 0.275 ns | baseline | | 88 B | | -| DecodeFromFullBuffer | .NET 8.0 | 1024 | U1 | 61.82 ns | 0.255 ns | 0.226 ns | 1.26x faster | 0.00x | 88 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 1024 | U1 | 104.49 ns | 1.341 ns | 1.255 ns | baseline | | 1088 B | | +| DecodeFromFullBuffer | .NET 8.0 | 1024 | U1 | 84.39 ns | 0.772 ns | 0.645 ns | 1.24x faster | 0.02x | 1088 B | 1.00x more | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **1024** | **U2** | **268.65 ns** | **1.689 ns** | **1.580 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 1024 | U2 | 285.31 ns | 2.091 ns | 1.853 ns | 1.06x slower | 0.01x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **1024** | **U2** | **279.76 ns** | **3.722 ns** | **3.482 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 1024 | U2 | 293.43 ns | 5.072 ns | 4.745 ns | 1.05x slower | 0.02x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 1024 | U2 | 314.24 ns | 0.618 ns | 0.483 ns | baseline | | 88 B | | -| DecodeFromFullBuffer | .NET 8.0 | 1024 | U2 | 303.49 ns | 2.141 ns | 1.898 ns | 1.04x faster | 0.01x | 88 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 1024 | U2 | 330.99 ns | 1.384 ns | 1.227 ns | baseline | | 88 B | | +| DecodeFromFullBuffer | .NET 8.0 | 1024 | U2 | 312.87 ns | 4.301 ns | 3.813 ns | 1.06x faster | 0.01x | 88 B | 1.00x more | | | | | | | | | | | | | -| **EncodeTo** | **.NET 6.0** | **1024** | **U4** | **268.31 ns** | **0.231 ns** | **0.205 ns** | **baseline** | **** | **40 B** | **** | -| EncodeTo | .NET 8.0 | 1024 | U4 | 278.46 ns | 1.329 ns | 1.178 ns | 1.04x slower | 0.00x | 40 B | 1.00x more | +| **EncodeTo** | **.NET 6.0** | **1024** | **U4** | **282.37 ns** | **4.767 ns** | **4.459 ns** | **baseline** | **** | **40 B** | **** | +| EncodeTo | .NET 8.0 | 1024 | U4 | 296.05 ns | 4.107 ns | 3.842 ns | 1.05x slower | 0.02x | 40 B | 1.00x more | | | | | | | | | | | | | -| DecodeFromFullBuffer | .NET 6.0 | 1024 | U4 | 318.21 ns | 1.732 ns | 1.620 ns | baseline | | 88 B | | -| DecodeFromFullBuffer | .NET 8.0 | 1024 | U4 | 306.87 ns | 1.488 ns | 1.319 ns | 1.04x faster | 0.00x | 88 B | 1.00x more | +| DecodeFromFullBuffer | .NET 6.0 | 1024 | U4 | 338.36 ns | 4.003 ns | 3.549 ns | baseline | | 88 B | | +| DecodeFromFullBuffer | .NET 8.0 | 1024 | U4 | 325.19 ns | 1.833 ns | 1.531 ns | 1.04x faster | 0.01x | 88 B | 1.00x more | diff --git a/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.JsonSerialization-report-github.md b/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.JsonSerialization-report-github.md index 929b3ab..fd82c6a 100644 --- a/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.JsonSerialization-report-github.md +++ b/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.JsonSerialization-report-github.md @@ -4,27 +4,27 @@ BenchmarkDotNet v0.13.10, Windows 11 (10.0.22631.2861/23H2/2023Update/SunValley3 Unknown processor .NET SDK 8.0.100 [Host] : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 - Job-ZQSTYQ : .NET 6.0.25 (6.0.2523.51912), X64 RyuJIT AVX2 - Job-LEHGCO : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 + Job-LLCSMO : .NET 6.0.25 (6.0.2523.51912), X64 RyuJIT AVX2 + Job-LSZLMA : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 ``` | Method | Runtime | ItemCount | Mean | Error | StdDev | Ratio | RatioSD | Allocated | Alloc Ratio | |----------- |--------- |---------- |-----------:|----------:|----------:|-------------:|--------:|----------:|------------:| -| **Serialize** | **.NET 6.0** | **0** | **1.902 μs** | **0.0133 μs** | **0.0118 μs** | **baseline** | **** | **1.02 KB** | **** | -| Serialize | .NET 8.0 | 0 | 1.315 μs | 0.0087 μs | 0.0077 μs | 1.45x faster | 0.01x | 1.02 KB | 1.00x more | +| **Serialize** | **.NET 6.0** | **0** | **2.055 μs** | **0.0405 μs** | **0.0466 μs** | **baseline** | **** | **1.02 KB** | **** | +| Serialize | .NET 8.0 | 0 | 1.400 μs | 0.0179 μs | 0.0158 μs | 1.47x faster | 0.05x | 1.02 KB | 1.00x more | | | | | | | | | | | | -| Deserialze | .NET 6.0 | 0 | 13.916 μs | 0.0833 μs | 0.0779 μs | baseline | | 9.55 KB | | -| Deserialze | .NET 8.0 | 0 | 7.996 μs | 0.0340 μs | 0.0318 μs | 1.74x faster | 0.01x | 9.55 KB | 1.00x more | +| Deserialze | .NET 6.0 | 0 | 15.064 μs | 0.2881 μs | 0.3318 μs | baseline | | 9.55 KB | | +| Deserialze | .NET 8.0 | 0 | 8.713 μs | 0.1685 μs | 0.1655 μs | 1.73x faster | 0.04x | 9.55 KB | 1.00x more | | | | | | | | | | | | -| **Serialize** | **.NET 6.0** | **64** | **27.933 μs** | **0.1516 μs** | **0.1418 μs** | **baseline** | **** | **15.05 KB** | **** | -| Serialize | .NET 8.0 | 64 | 22.478 μs | 0.0851 μs | 0.0796 μs | 1.24x faster | 0.01x | 15.05 KB | 1.00x more | +| **Serialize** | **.NET 6.0** | **64** | **29.649 μs** | **0.5179 μs** | **0.4844 μs** | **baseline** | **** | **15.05 KB** | **** | +| Serialize | .NET 8.0 | 64 | 23.805 μs | 0.3196 μs | 0.2833 μs | 1.25x faster | 0.02x | 15.05 KB | 1.00x more | | | | | | | | | | | | -| Deserialze | .NET 6.0 | 64 | 136.572 μs | 0.7437 μs | 0.6592 μs | baseline | | 42.23 KB | | -| Deserialze | .NET 8.0 | 64 | 87.711 μs | 0.1836 μs | 0.1628 μs | 1.56x faster | 0.01x | 42.23 KB | 1.00x less | +| Deserialze | .NET 6.0 | 64 | 140.490 μs | 2.0292 μs | 1.8981 μs | baseline | | 42.23 KB | | +| Deserialze | .NET 8.0 | 64 | 92.651 μs | 1.8082 μs | 1.8569 μs | 1.52x faster | 0.04x | 42.23 KB | 1.00x less | | | | | | | | | | | | -| **Serialize** | **.NET 6.0** | **128** | **51.931 μs** | **0.3025 μs** | **0.2829 μs** | **baseline** | **** | **28.3 KB** | **** | -| Serialize | .NET 8.0 | 128 | 42.367 μs | 0.2430 μs | 0.2273 μs | 1.23x faster | 0.01x | 28.3 KB | 1.00x more | +| **Serialize** | **.NET 6.0** | **128** | **54.629 μs** | **0.4846 μs** | **0.4296 μs** | **baseline** | **** | **28.3 KB** | **** | +| Serialize | .NET 8.0 | 128 | 44.967 μs | 0.8929 μs | 0.8769 μs | 1.22x faster | 0.03x | 28.3 KB | 1.00x more | | | | | | | | | | | | -| Deserialze | .NET 6.0 | 128 | 244.020 μs | 1.2472 μs | 1.0415 μs | baseline | | 74.61 KB | | -| Deserialze | .NET 8.0 | 128 | 185.094 μs | 0.1490 μs | 0.1321 μs | 1.32x faster | 0.01x | 74.61 KB | 1.00x less | +| Deserialze | .NET 6.0 | 128 | 269.203 μs | 3.8650 μs | 3.6153 μs | baseline | | 74.61 KB | | +| Deserialze | .NET 8.0 | 128 | 173.503 μs | 1.6810 μs | 1.4037 μs | 1.55x faster | 0.01x | 74.61 KB | 1.00x less | diff --git a/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.PipeDecoding-report-github.md b/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.PipeDecoding-report-github.md index bdc7dfd..8ab393b 100644 --- a/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.PipeDecoding-report-github.md +++ b/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.PipeDecoding-report-github.md @@ -4,18 +4,18 @@ BenchmarkDotNet v0.13.10, Windows 11 (10.0.22631.2861/23H2/2023Update/SunValley3 Unknown processor .NET SDK 8.0.100 [Host] : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 - Job-ZQSTYQ : .NET 6.0.25 (6.0.2523.51912), X64 RyuJIT AVX2 - Job-LEHGCO : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 + Job-LLCSMO : .NET 6.0.25 (6.0.2523.51912), X64 RyuJIT AVX2 + Job-LSZLMA : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 ``` | Method | Runtime | InputChunkSize | MessageCount | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio | |----------------------------------------- |--------- |--------------- |------------- |---------:|----------:|----------:|-------------:|--------:|---------:|-------:|----------:|------------:| -| **Message_Can_Decode_From_Chunked_Sequence** | **.NET 6.0** | **16** | **500** | **3.879 ms** | **0.0491 ms** | **0.0410 ms** | **baseline** | **** | **171.8750** | **7.8125** | **2.18 MB** | **** | -| Message_Can_Decode_From_Chunked_Sequence | .NET 8.0 | 16 | 500 | 3.005 ms | 0.0201 ms | 0.0178 ms | 1.29x faster | 0.02x | 175.7813 | 7.8125 | 2.19 MB | 1.01x more | +| **Message_Can_Decode_From_Chunked_Sequence** | **.NET 6.0** | **16** | **500** | **3.805 ms** | **0.0587 ms** | **0.0549 ms** | **baseline** | **** | **171.8750** | **7.8125** | **2.18 MB** | **** | +| Message_Can_Decode_From_Chunked_Sequence | .NET 8.0 | 16 | 500 | 2.902 ms | 0.0569 ms | 0.0532 ms | 1.31x faster | 0.03x | 171.8750 | - | 2.19 MB | 1.01x more | | | | | | | | | | | | | | | -| **Message_Can_Decode_From_Chunked_Sequence** | **.NET 6.0** | **64** | **500** | **2.930 ms** | **0.0204 ms** | **0.0181 ms** | **baseline** | **** | **171.8750** | **7.8125** | **2.18 MB** | **** | -| Message_Can_Decode_From_Chunked_Sequence | .NET 8.0 | 64 | 500 | 2.410 ms | 0.0049 ms | 0.0041 ms | 1.22x faster | 0.01x | 171.8750 | - | 2.19 MB | 1.01x more | +| **Message_Can_Decode_From_Chunked_Sequence** | **.NET 6.0** | **64** | **500** | **3.044 ms** | **0.0410 ms** | **0.0363 ms** | **baseline** | **** | **171.8750** | **7.8125** | **2.18 MB** | **** | +| Message_Can_Decode_From_Chunked_Sequence | .NET 8.0 | 64 | 500 | 2.503 ms | 0.0412 ms | 0.0365 ms | 1.22x faster | 0.02x | 175.7813 | 7.8125 | 2.19 MB | 1.01x more | | | | | | | | | | | | | | | -| **Message_Can_Decode_From_Chunked_Sequence** | **.NET 6.0** | **256** | **500** | **2.903 ms** | **0.0112 ms** | **0.0100 ms** | **baseline** | **** | **171.8750** | **7.8125** | **2.18 MB** | **** | -| Message_Can_Decode_From_Chunked_Sequence | .NET 8.0 | 256 | 500 | 2.457 ms | 0.0225 ms | 0.0211 ms | 1.18x faster | 0.01x | 171.8750 | - | 2.19 MB | 1.01x more | +| **Message_Can_Decode_From_Chunked_Sequence** | **.NET 6.0** | **256** | **500** | **3.049 ms** | **0.0301 ms** | **0.0267 ms** | **baseline** | **** | **171.8750** | **7.8125** | **2.18 MB** | **** | +| Message_Can_Decode_From_Chunked_Sequence | .NET 8.0 | 256 | 500 | 2.446 ms | 0.0200 ms | 0.0156 ms | 1.25x faster | 0.01x | 171.8750 | - | 2.19 MB | 1.01x more | diff --git a/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.RequestResponse-report-github.md b/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.RequestResponse-report-github.md index 32466be..c61823c 100644 --- a/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.RequestResponse-report-github.md +++ b/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.RequestResponse-report-github.md @@ -4,21 +4,21 @@ BenchmarkDotNet v0.13.10, Windows 11 (10.0.22631.2861/23H2/2023Update/SunValley3 Unknown processor .NET SDK 8.0.100 [Host] : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 - Job-JZAXRR : .NET 6.0.25 (6.0.2523.51912), X64 RyuJIT AVX2 - Job-NGSZRM : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 + Job-LLCSMO : .NET 6.0.25 (6.0.2523.51912), X64 RyuJIT AVX2 + Job-LSZLMA : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 ``` -| Method | Runtime | Count | Mean | Error | StdDev | Median | Ratio | RatioSD | Gen0 | Allocated | Alloc Ratio | -|----------- |--------- |------ |-----------:|----------:|----------:|-----------:|-------------:|--------:|-------:|----------:|------------:| -| **Sequential** | **.NET 6.0** | **16** | **931.9 μs** | **60.27 μs** | **175.82 μs** | **1,001.1 μs** | **baseline** | **** | **0.9766** | **20.05 KB** | **** | -| Sequential | .NET 8.0 | 16 | 685.5 μs | 58.04 μs | 171.12 μs | 826.9 μs | 1.45x faster | 0.49x | 0.9766 | 19.79 KB | 1.01x less | -| | | | | | | | | | | | | -| Parallel | .NET 6.0 | 16 | 686.2 μs | 35.14 μs | 102.51 μs | 676.2 μs | baseline | | - | 18.1 KB | | -| Parallel | .NET 8.0 | 16 | 573.3 μs | 52.10 μs | 152.81 μs | 548.3 μs | 1.29x faster | 0.42x | 0.9766 | 17.33 KB | 1.04x less | -| | | | | | | | | | | | | -| **Sequential** | **.NET 6.0** | **64** | **2,089.9 μs** | **73.03 μs** | **188.50 μs** | **2,143.1 μs** | **baseline** | **** | **5.8594** | **79.68 KB** | **** | -| Sequential | .NET 8.0 | 64 | 2,005.3 μs | 14.96 μs | 13.26 μs | 2,005.4 μs | 1.05x slower | 0.03x | 3.9063 | 78.67 KB | 1.01x less | -| | | | | | | | | | | | | -| Parallel | .NET 6.0 | 64 | 2,077.2 μs | 147.08 μs | 426.70 μs | 2,023.2 μs | baseline | | 3.9063 | 69.56 KB | | -| Parallel | .NET 8.0 | 64 | 1,155.8 μs | 62.79 μs | 181.16 μs | 1,156.4 μs | 1.85x faster | 0.54x | 3.9063 | 67.42 KB | 1.03x less | +| Method | Runtime | Count | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Allocated | Alloc Ratio | +|----------- |--------- |------ |-----------:|----------:|----------:|-------------:|--------:|-------:|----------:|------------:| +| **Sequential** | **.NET 6.0** | **16** | **582.3 μs** | **11.62 μs** | **25.26 μs** | **baseline** | **** | **0.9766** | **20.05 KB** | **** | +| Sequential | .NET 8.0 | 16 | 576.0 μs | 11.22 μs | 18.43 μs | 1.01x faster | 0.05x | 0.9766 | 19.79 KB | 1.01x less | +| | | | | | | | | | | | +| Parallel | .NET 6.0 | 16 | 1,463.0 μs | 101.18 μs | 295.14 μs | baseline | | - | 17.89 KB | | +| Parallel | .NET 8.0 | 16 | 815.5 μs | 64.64 μs | 188.55 μs | 1.90x faster | 0.60x | 0.9766 | 17.66 KB | 1.01x less | +| | | | | | | | | | | | +| **Sequential** | **.NET 6.0** | **64** | **2,274.4 μs** | **45.30 μs** | **97.52 μs** | **baseline** | **** | **3.9063** | **79.67 KB** | **** | +| Sequential | .NET 8.0 | 64 | 2,252.4 μs | 44.99 μs | 101.56 μs | 1.01x faster | 0.06x | 3.9063 | 78.66 KB | 1.01x less | +| | | | | | | | | | | | +| Parallel | .NET 6.0 | 64 | 2,416.2 μs | 251.87 μs | 738.68 μs | baseline | | 3.9063 | 69.35 KB | | +| Parallel | .NET 8.0 | 64 | 1,054.5 μs | 86.59 μs | 226.59 μs | 2.34x faster | 0.91x | - | 68.08 KB | 1.02x less | diff --git a/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.ReverseEndianness-report-github.md b/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.ReverseEndianness-report-github.md index 627efbd..ed8d439 100644 --- a/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.ReverseEndianness-report-github.md +++ b/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.ReverseEndianness-report-github.md @@ -4,81 +4,81 @@ BenchmarkDotNet v0.13.10, Windows 11 (10.0.22631.2861/23H2/2023Update/SunValley3 Unknown processor .NET SDK 8.0.100 [Host] : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 - Job-ZQSTYQ : .NET 6.0.25 (6.0.2523.51912), X64 RyuJIT AVX2 - Job-LEHGCO : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 + Job-LLCSMO : .NET 6.0.25 (6.0.2523.51912), X64 RyuJIT AVX2 + Job-LSZLMA : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 ``` -| Method | Runtime | Categories | Size | Mean | Error | StdDev | Ratio | RatioSD | -|------------------------ |--------- |----------- |----- |---------:|---------:|---------:|-------------:|--------:| -| ReverseEndiannessHelper | .NET 6.0 | Double | 64 | 19.01 ns | 0.120 ns | 0.100 ns | baseline | | -| ReverseEndiannessHelper | .NET 8.0 | Double | 64 | 19.01 ns | 0.061 ns | 0.057 ns | 1.00x faster | 0.01x | -| | | | | | | | | | -| ForeachRef | .NET 6.0 | Double | 64 | 37.41 ns | 0.203 ns | 0.190 ns | baseline | | -| ForeachRef | .NET 8.0 | Double | 64 | 28.45 ns | 0.409 ns | 0.382 ns | 1.32x faster | 0.02x | -| | | | | | | | | | -| BinaryPrimitives | .NET 6.0 | Doulbe | 64 | 23.38 ns | 0.196 ns | 0.184 ns | baseline | | -| BinaryPrimitives | .NET 8.0 | Doulbe | 64 | 17.92 ns | 0.105 ns | 0.093 ns | 1.31x faster | 0.01x | -| | | | | | | | | | -| ReverseEndiannessHelper | .NET 6.0 | Int16 | 64 | 17.87 ns | 0.265 ns | 0.221 ns | baseline | | -| ReverseEndiannessHelper | .NET 8.0 | Int16 | 64 | 26.74 ns | 0.156 ns | 0.146 ns | 1.50x slower | 0.02x | -| | | | | | | | | | -| BinaryPrimitives | .NET 6.0 | Int16 | 64 | 15.48 ns | 0.323 ns | 0.907 ns | baseline | | -| BinaryPrimitives | .NET 8.0 | Int16 | 64 | 15.89 ns | 0.341 ns | 0.777 ns | 1.02x slower | 0.08x | -| | | | | | | | | | -| ForeachRef | .NET 6.0 | Int16 | 64 | 26.95 ns | 0.352 ns | 0.329 ns | baseline | | -| ForeachRef | .NET 8.0 | Int16 | 64 | 22.55 ns | 0.147 ns | 0.137 ns | 1.20x faster | 0.01x | -| | | | | | | | | | -| ReverseEndiannessHelper | .NET 6.0 | Int32 | 64 | 19.61 ns | 0.051 ns | 0.048 ns | baseline | | -| ReverseEndiannessHelper | .NET 8.0 | Int32 | 64 | 18.04 ns | 0.379 ns | 0.774 ns | 1.09x faster | 0.05x | -| | | | | | | | | | -| BinaryPrimitives | .NET 6.0 | Int32 | 64 | 17.77 ns | 0.301 ns | 0.282 ns | baseline | | -| BinaryPrimitives | .NET 8.0 | Int32 | 64 | 14.59 ns | 0.119 ns | 0.105 ns | 1.22x faster | 0.02x | -| | | | | | | | | | -| ForeachRef | .NET 6.0 | Int32 | 64 | 30.15 ns | 0.188 ns | 0.175 ns | baseline | | -| ForeachRef | .NET 8.0 | Int32 | 64 | 15.97 ns | 0.283 ns | 0.265 ns | 1.89x faster | 0.03x | -| | | | | | | | | | -| ReverseEndiannessHelper | .NET 6.0 | Int64 | 64 | 19.07 ns | 0.326 ns | 0.305 ns | baseline | | -| ReverseEndiannessHelper | .NET 8.0 | Int64 | 64 | 27.10 ns | 0.017 ns | 0.015 ns | 1.42x slower | 0.02x | -| | | | | | | | | | -| BinaryPrimitives | .NET 6.0 | Int64 | 64 | 21.43 ns | 0.139 ns | 0.130 ns | baseline | | -| BinaryPrimitives | .NET 8.0 | Int64 | 64 | 15.30 ns | 0.323 ns | 0.303 ns | 1.40x faster | 0.03x | -| | | | | | | | | | -| ForeachRef | .NET 6.0 | Int64 | 64 | 24.63 ns | 0.262 ns | 0.245 ns | baseline | | -| ForeachRef | .NET 8.0 | Int64 | 64 | 19.30 ns | 0.253 ns | 0.237 ns | 1.28x faster | 0.01x | -| | | | | | | | | | -| ReverseEndiannessHelper | .NET 6.0 | Single | 64 | 18.18 ns | 0.354 ns | 0.295 ns | baseline | | -| ReverseEndiannessHelper | .NET 8.0 | Single | 64 | 18.74 ns | 0.399 ns | 0.427 ns | 1.03x slower | 0.04x | -| | | | | | | | | | -| BinaryPrimitives | .NET 6.0 | Single | 64 | 15.34 ns | 0.035 ns | 0.031 ns | baseline | | -| BinaryPrimitives | .NET 8.0 | Single | 64 | 20.88 ns | 0.142 ns | 0.133 ns | 1.36x slower | 0.01x | -| | | | | | | | | | -| ForeachRef | .NET 6.0 | Single | 64 | 25.61 ns | 0.112 ns | 0.105 ns | baseline | | -| ForeachRef | .NET 8.0 | Single | 64 | 20.09 ns | 0.074 ns | 0.062 ns | 1.27x faster | 0.01x | -| | | | | | | | | | -| ReverseEndiannessHelper | .NET 6.0 | UInt16 | 64 | 22.13 ns | 0.148 ns | 0.139 ns | baseline | | -| ReverseEndiannessHelper | .NET 8.0 | UInt16 | 64 | 17.39 ns | 0.363 ns | 1.007 ns | 1.28x faster | 0.07x | -| | | | | | | | | | -| BinaryPrimitives | .NET 6.0 | UInt16 | 64 | 20.70 ns | 0.421 ns | 0.468 ns | baseline | | -| BinaryPrimitives | .NET 8.0 | UInt16 | 64 | 15.80 ns | 0.335 ns | 0.560 ns | 1.31x faster | 0.07x | -| | | | | | | | | | -| ForeachRef | .NET 6.0 | UInt16 | 64 | 27.99 ns | 0.157 ns | 0.139 ns | baseline | | -| ForeachRef | .NET 8.0 | UInt16 | 64 | 22.70 ns | 0.159 ns | 0.149 ns | 1.23x faster | 0.01x | -| | | | | | | | | | -| ReverseEndiannessHelper | .NET 6.0 | UInt32 | 64 | 16.82 ns | 0.239 ns | 0.223 ns | baseline | | -| ReverseEndiannessHelper | .NET 8.0 | UInt32 | 64 | 18.29 ns | 0.390 ns | 0.769 ns | 1.08x slower | 0.05x | -| | | | | | | | | | -| BinaryPrimitives | .NET 6.0 | UInt32 | 64 | 14.05 ns | 0.172 ns | 0.143 ns | baseline | | -| BinaryPrimitives | .NET 8.0 | UInt32 | 64 | 15.09 ns | 0.325 ns | 0.361 ns | 1.08x slower | 0.03x | -| | | | | | | | | | -| ForeachRef | .NET 6.0 | UInt32 | 64 | 21.61 ns | 0.147 ns | 0.122 ns | baseline | | -| ForeachRef | .NET 8.0 | UInt32 | 64 | 16.74 ns | 0.353 ns | 0.406 ns | 1.29x faster | 0.03x | -| | | | | | | | | | -| ReverseEndiannessHelper | .NET 6.0 | UInt64 | 64 | 21.43 ns | 0.450 ns | 1.201 ns | baseline | | -| ReverseEndiannessHelper | .NET 8.0 | UInt64 | 64 | 18.65 ns | 0.396 ns | 0.800 ns | 1.15x faster | 0.08x | -| | | | | | | | | | -| BinaryPrimitives | .NET 6.0 | UInt64 | 64 | 21.47 ns | 0.140 ns | 0.131 ns | baseline | | -| BinaryPrimitives | .NET 8.0 | UInt64 | 64 | 15.01 ns | 0.199 ns | 0.186 ns | 1.43x faster | 0.02x | -| | | | | | | | | | -| ForeachRef | .NET 6.0 | UInt64 | 64 | 24.74 ns | 0.047 ns | 0.044 ns | baseline | | -| ForeachRef | .NET 8.0 | UInt64 | 64 | 19.28 ns | 0.300 ns | 0.266 ns | 1.28x faster | 0.02x | +| Method | Runtime | Categories | Size | Mean | Error | StdDev | Median | Ratio | RatioSD | +|------------------------ |--------- |----------- |----- |---------:|---------:|---------:|---------:|-------------:|--------:| +| ReverseEndiannessHelper | .NET 6.0 | Double | 64 | 19.94 ns | 0.300 ns | 0.266 ns | 19.97 ns | baseline | | +| ReverseEndiannessHelper | .NET 8.0 | Double | 64 | 20.03 ns | 0.384 ns | 0.341 ns | 20.13 ns | 1.00x slower | 0.02x | +| | | | | | | | | | | +| ForeachRef | .NET 6.0 | Double | 64 | 31.78 ns | 0.636 ns | 0.849 ns | 31.67 ns | baseline | | +| ForeachRef | .NET 8.0 | Double | 64 | 29.60 ns | 0.599 ns | 0.713 ns | 29.58 ns | 1.08x faster | 0.04x | +| | | | | | | | | | | +| BinaryPrimitives | .NET 6.0 | Double | 64 | 24.48 ns | 0.273 ns | 0.255 ns | 24.37 ns | baseline | | +| BinaryPrimitives | .NET 8.0 | Double | 64 | 18.94 ns | 0.340 ns | 0.318 ns | 18.90 ns | 1.29x faster | 0.03x | +| | | | | | | | | | | +| ReverseEndiannessHelper | .NET 6.0 | Int16 | 64 | 18.54 ns | 0.293 ns | 0.260 ns | 18.48 ns | baseline | | +| ReverseEndiannessHelper | .NET 8.0 | Int16 | 64 | 25.57 ns | 0.364 ns | 0.341 ns | 25.57 ns | 1.38x slower | 0.02x | +| | | | | | | | | | | +| BinaryPrimitives | .NET 6.0 | Int16 | 64 | 16.71 ns | 0.353 ns | 0.550 ns | 16.62 ns | baseline | | +| BinaryPrimitives | .NET 8.0 | Int16 | 64 | 17.01 ns | 0.336 ns | 0.315 ns | 16.95 ns | 1.02x slower | 0.03x | +| | | | | | | | | | | +| ForeachRef | .NET 6.0 | Int16 | 64 | 27.97 ns | 0.204 ns | 0.181 ns | 28.03 ns | baseline | | +| ForeachRef | .NET 8.0 | Int16 | 64 | 23.66 ns | 0.381 ns | 0.357 ns | 23.60 ns | 1.18x faster | 0.01x | +| | | | | | | | | | | +| ReverseEndiannessHelper | .NET 6.0 | Int32 | 64 | 20.39 ns | 0.201 ns | 0.179 ns | 20.42 ns | baseline | | +| ReverseEndiannessHelper | .NET 8.0 | Int32 | 64 | 18.27 ns | 0.374 ns | 0.349 ns | 18.31 ns | 1.11x faster | 0.02x | +| | | | | | | | | | | +| BinaryPrimitives | .NET 6.0 | Int32 | 64 | 18.81 ns | 0.239 ns | 0.223 ns | 18.83 ns | baseline | | +| BinaryPrimitives | .NET 8.0 | Int32 | 64 | 15.63 ns | 0.323 ns | 0.332 ns | 15.57 ns | 1.20x faster | 0.03x | +| | | | | | | | | | | +| ForeachRef | .NET 6.0 | Int32 | 64 | 24.51 ns | 0.257 ns | 0.228 ns | 24.49 ns | baseline | | +| ForeachRef | .NET 8.0 | Int32 | 64 | 17.53 ns | 0.371 ns | 0.364 ns | 17.51 ns | 1.40x faster | 0.03x | +| | | | | | | | | | | +| ReverseEndiannessHelper | .NET 6.0 | Int64 | 64 | 20.39 ns | 0.430 ns | 0.402 ns | 20.41 ns | baseline | | +| ReverseEndiannessHelper | .NET 8.0 | Int64 | 64 | 29.24 ns | 0.610 ns | 0.571 ns | 29.14 ns | 1.43x slower | 0.04x | +| | | | | | | | | | | +| BinaryPrimitives | .NET 6.0 | Int64 | 64 | 22.38 ns | 0.417 ns | 0.390 ns | 22.39 ns | baseline | | +| BinaryPrimitives | .NET 8.0 | Int64 | 64 | 16.73 ns | 0.276 ns | 0.258 ns | 16.77 ns | 1.34x faster | 0.04x | +| | | | | | | | | | | +| ForeachRef | .NET 6.0 | Int64 | 64 | 25.88 ns | 0.239 ns | 0.223 ns | 25.93 ns | baseline | | +| ForeachRef | .NET 8.0 | Int64 | 64 | 20.21 ns | 0.386 ns | 0.361 ns | 20.25 ns | 1.28x faster | 0.02x | +| | | | | | | | | | | +| ReverseEndiannessHelper | .NET 6.0 | Single | 64 | 19.09 ns | 0.366 ns | 0.342 ns | 19.15 ns | baseline | | +| ReverseEndiannessHelper | .NET 8.0 | Single | 64 | 33.25 ns | 0.676 ns | 1.335 ns | 33.90 ns | 1.72x slower | 0.08x | +| | | | | | | | | | | +| BinaryPrimitives | .NET 6.0 | Single | 64 | 16.32 ns | 0.257 ns | 0.227 ns | 16.36 ns | baseline | | +| BinaryPrimitives | .NET 8.0 | Single | 64 | 32.20 ns | 0.659 ns | 1.120 ns | 32.79 ns | 1.98x slower | 0.09x | +| | | | | | | | | | | +| ForeachRef | .NET 6.0 | Single | 64 | 40.47 ns | 0.827 ns | 2.045 ns | 40.72 ns | baseline | | +| ForeachRef | .NET 8.0 | Single | 64 | 36.64 ns | 0.757 ns | 0.744 ns | 36.94 ns | 1.12x faster | 0.07x | +| | | | | | | | | | | +| ReverseEndiannessHelper | .NET 6.0 | UInt16 | 64 | 31.20 ns | 0.645 ns | 1.041 ns | 31.43 ns | baseline | | +| ReverseEndiannessHelper | .NET 8.0 | UInt16 | 64 | 18.72 ns | 0.392 ns | 0.481 ns | 18.72 ns | 1.66x faster | 0.08x | +| | | | | | | | | | | +| BinaryPrimitives | .NET 6.0 | UInt16 | 64 | 21.84 ns | 0.196 ns | 0.417 ns | 21.82 ns | baseline | | +| BinaryPrimitives | .NET 8.0 | UInt16 | 64 | 17.07 ns | 0.351 ns | 0.328 ns | 17.07 ns | 1.28x faster | 0.05x | +| | | | | | | | | | | +| ForeachRef | .NET 6.0 | UInt16 | 64 | 27.79 ns | 0.261 ns | 0.244 ns | 27.84 ns | baseline | | +| ForeachRef | .NET 8.0 | UInt16 | 64 | 23.62 ns | 0.167 ns | 0.148 ns | 23.64 ns | 1.18x faster | 0.01x | +| | | | | | | | | | | +| ReverseEndiannessHelper | .NET 6.0 | UInt32 | 64 | 17.76 ns | 0.311 ns | 0.275 ns | 17.80 ns | baseline | | +| ReverseEndiannessHelper | .NET 8.0 | UInt32 | 64 | 18.86 ns | 0.378 ns | 0.389 ns | 18.94 ns | 1.07x slower | 0.03x | +| | | | | | | | | | | +| BinaryPrimitives | .NET 6.0 | UInt32 | 64 | 15.53 ns | 0.332 ns | 0.326 ns | 15.53 ns | baseline | | +| BinaryPrimitives | .NET 8.0 | UInt32 | 64 | 15.68 ns | 0.260 ns | 0.243 ns | 15.74 ns | 1.01x slower | 0.03x | +| | | | | | | | | | | +| ForeachRef | .NET 6.0 | UInt32 | 64 | 23.83 ns | 0.241 ns | 0.214 ns | 23.88 ns | baseline | | +| ForeachRef | .NET 8.0 | UInt32 | 64 | 17.97 ns | 0.380 ns | 0.423 ns | 17.95 ns | 1.32x faster | 0.04x | +| | | | | | | | | | | +| ReverseEndiannessHelper | .NET 6.0 | UInt64 | 64 | 23.62 ns | 0.272 ns | 0.254 ns | 23.65 ns | baseline | | +| ReverseEndiannessHelper | .NET 8.0 | UInt64 | 64 | 19.79 ns | 0.255 ns | 0.226 ns | 19.78 ns | 1.19x faster | 0.02x | +| | | | | | | | | | | +| BinaryPrimitives | .NET 6.0 | UInt64 | 64 | 22.44 ns | 0.314 ns | 0.294 ns | 22.45 ns | baseline | | +| BinaryPrimitives | .NET 8.0 | UInt64 | 64 | 16.34 ns | 0.340 ns | 0.465 ns | 16.31 ns | 1.38x faster | 0.06x | +| | | | | | | | | | | +| ForeachRef | .NET 6.0 | UInt64 | 64 | 26.79 ns | 0.364 ns | 0.341 ns | 26.83 ns | baseline | | +| ForeachRef | .NET 8.0 | UInt64 | 64 | 21.81 ns | 0.461 ns | 0.549 ns | 21.77 ns | 1.23x faster | 0.04x | diff --git a/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.SmlSerialization-report-github.md b/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.SmlSerialization-report-github.md index e54eb2d..6d14eba 100644 --- a/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.SmlSerialization-report-github.md +++ b/test/Benchmarks/BenchmarkDotNet.Artifacts/results/Benchmarks.SmlSerialization-report-github.md @@ -4,27 +4,27 @@ BenchmarkDotNet v0.13.10, Windows 11 (10.0.22631.2861/23H2/2023Update/SunValley3 Unknown processor .NET SDK 8.0.100 [Host] : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 - Job-ZQSTYQ : .NET 6.0.25 (6.0.2523.51912), X64 RyuJIT AVX2 - Job-LEHGCO : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 + Job-LLCSMO : .NET 6.0.25 (6.0.2523.51912), X64 RyuJIT AVX2 + Job-LSZLMA : .NET 8.0.0 (8.0.23.53103), X64 RyuJIT AVX2 ``` | Method | Runtime | ItemCount | Mean | Error | StdDev | Ratio | RatioSD | Allocated | Alloc Ratio | |----------- |--------- |---------- |----------:|----------:|----------:|-------------:|--------:|----------:|------------:| -| **Serialize** | **.NET 6.0** | **0** | **3.861 μs** | **0.0254 μs** | **0.0238 μs** | **baseline** | **** | **9.78 KB** | **** | -| Serialize | .NET 8.0 | 0 | 3.051 μs | 0.0302 μs | 0.0282 μs | 1.27x faster | 0.01x | 9.78 KB | 1.00x more | +| **Serialize** | **.NET 6.0** | **0** | **4.064 μs** | **0.0540 μs** | **0.0422 μs** | **baseline** | **** | **9.78 KB** | **** | +| Serialize | .NET 8.0 | 0 | 3.215 μs | 0.0614 μs | 0.0603 μs | 1.27x faster | 0.03x | 9.78 KB | 1.00x more | | | | | | | | | | | | -| Deserialze | .NET 6.0 | 0 | 3.416 μs | 0.0127 μs | 0.0119 μs | baseline | | 5.26 KB | | -| Deserialze | .NET 8.0 | 0 | 2.582 μs | 0.0106 μs | 0.0094 μs | 1.32x faster | 0.01x | 5.26 KB | 1.00x more | +| Deserialze | .NET 6.0 | 0 | 3.633 μs | 0.0415 μs | 0.0368 μs | baseline | | 5.26 KB | | +| Deserialze | .NET 8.0 | 0 | 2.929 μs | 0.0579 μs | 0.0690 μs | 1.24x faster | 0.04x | 5.26 KB | 1.00x more | | | | | | | | | | | | -| **Serialize** | **.NET 6.0** | **64** | **37.488 μs** | **0.1566 μs** | **0.1465 μs** | **baseline** | **** | **24.87 KB** | **** | -| Serialize | .NET 8.0 | 64 | 28.365 μs | 0.0874 μs | 0.0730 μs | 1.32x faster | 0.00x | 30.87 KB | 1.24x more | +| **Serialize** | **.NET 6.0** | **64** | **38.139 μs** | **0.6314 μs** | **0.5907 μs** | **baseline** | **** | **24.87 KB** | **** | +| Serialize | .NET 8.0 | 64 | 29.500 μs | 0.5683 μs | 0.5316 μs | 1.29x faster | 0.03x | 30.87 KB | 1.24x more | | | | | | | | | | | | -| Deserialze | .NET 6.0 | 64 | 34.195 μs | 0.0630 μs | 0.0559 μs | baseline | | 23.77 KB | | -| Deserialze | .NET 8.0 | 64 | 24.047 μs | 0.1030 μs | 0.0913 μs | 1.42x faster | 0.01x | 23.77 KB | 1.00x more | +| Deserialze | .NET 6.0 | 64 | 36.019 μs | 0.7000 μs | 0.6547 μs | baseline | | 23.77 KB | | +| Deserialze | .NET 8.0 | 64 | 25.311 μs | 0.3032 μs | 0.2836 μs | 1.42x faster | 0.03x | 23.77 KB | 1.00x more | | | | | | | | | | | | -| **Serialize** | **.NET 6.0** | **128** | **70.302 μs** | **0.1595 μs** | **0.1492 μs** | **baseline** | **** | **40.71 KB** | **** | -| Serialize | .NET 8.0 | 128 | 50.821 μs | 0.1879 μs | 0.1665 μs | 1.38x faster | 0.00x | 52.71 KB | 1.29x more | +| **Serialize** | **.NET 6.0** | **128** | **68.782 μs** | **1.2549 μs** | **1.1125 μs** | **baseline** | **** | **40.71 KB** | **** | +| Serialize | .NET 8.0 | 128 | 55.003 μs | 0.7716 μs | 0.7217 μs | 1.25x faster | 0.03x | 52.71 KB | 1.29x more | | | | | | | | | | | | -| Deserialze | .NET 6.0 | 128 | 63.249 μs | 0.3108 μs | 0.2595 μs | baseline | | 40.42 KB | | -| Deserialze | .NET 8.0 | 128 | 42.524 μs | 0.1631 μs | 0.1446 μs | 1.49x faster | 0.01x | 40.42 KB | 1.00x more | +| Deserialze | .NET 6.0 | 128 | 68.600 μs | 1.1580 μs | 1.0832 μs | baseline | | 40.42 KB | | +| Deserialze | .NET 8.0 | 128 | 45.136 μs | 0.3481 μs | 0.2907 μs | 1.52x faster | 0.03x | 40.42 KB | 1.00x more | diff --git a/test/Benchmarks/ReverseEndianness.cs b/test/Benchmarks/ReverseEndianness.cs index 1b7af9d..92d1eea 100644 --- a/test/Benchmarks/ReverseEndianness.cs +++ b/test/Benchmarks/ReverseEndianness.cs @@ -353,7 +353,7 @@ public unsafe int Double_ReverseEndiannessHelper() } [Benchmark(Description = "BinaryPrimitives")] - [BenchmarkCategory("Doulbe")] + [BenchmarkCategory("Double")] public int Double_BinaryPrimitives() { var data = _double.AsSpan(); diff --git a/test/Secs4Net.Json.UnitTests/Secs4Net.Json.UnitTests.csproj b/test/Secs4Net.Json.UnitTests/Secs4Net.Json.UnitTests.csproj index a31222d..456811b 100644 --- a/test/Secs4Net.Json.UnitTests/Secs4Net.Json.UnitTests.csproj +++ b/test/Secs4Net.Json.UnitTests/Secs4Net.Json.UnitTests.csproj @@ -13,10 +13,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - + diff --git a/test/Secs4Net.Sml.UnitTests/Secs4Net.Sml.UnitTests.csproj b/test/Secs4Net.Sml.UnitTests/Secs4Net.Sml.UnitTests.csproj index 4966c0e..50c7fd0 100644 --- a/test/Secs4Net.Sml.UnitTests/Secs4Net.Sml.UnitTests.csproj +++ b/test/Secs4Net.Sml.UnitTests/Secs4Net.Sml.UnitTests.csproj @@ -13,10 +13,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - + diff --git a/test/Secs4Net.UnitTests/Secs4Net.UnitTests.csproj b/test/Secs4Net.UnitTests/Secs4Net.UnitTests.csproj index afb575b..67b42e8 100644 --- a/test/Secs4Net.UnitTests/Secs4Net.UnitTests.csproj +++ b/test/Secs4Net.UnitTests/Secs4Net.UnitTests.csproj @@ -3,6 +3,8 @@ net6.0;net8.0;net472 false + False + False @@ -14,10 +16,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - +