Repository navigation
v4.0.0-rc.1
Pre-releaseInstall: dotnet add package Nino --version 4.0.0-rc.1 (Unity package: 4.0.0-preview.201)
What's Changed
- 修改CSharpParser的AddMembers 修复多类或继承类新增对象不兼容反系列化问题 by @HuangUan in #174
- Bump the nuget group with 2 updates by @dependabot[bot] in #175
- Nino v4: rewrite of the runtime and the source generator by @JasonXuDeveloper in #176
- Bump actions/setup-python from 5 to 7 by @dependabot[bot] in #181
- Bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #177
- Bump actions/setup-dotnet from 4 to 6 by @dependabot[bot] in #178
- Bump actions/checkout from 4 to 7 by @dependabot[bot] in #179
- Bump actions/cache from 4 to 6 by @dependabot[bot] in #180
- Bump BenchmarkDotNet from 0.15.2 to 0.15.8 by @dependabot[bot] in #182
- Bump coverlet.collector from 6.0.4 to 10.1.0 by @dependabot[bot] in #183
- Update NuGet dependencies; README fixes by @JasonXuDeveloper in #190
- Tests: use a patched System.Security.Cryptography.Pkcs by @JasonXuDeveloper in #196
New Contributors
Full Changelog: v4.0.0-beta.47...v4.0.0-rc.1
📊 v3 3.3.13 vs v4 (same machine)
Nino v3 3.3.13 (NuGet) against v4.0.0-rc.1, back to back on the same runner
benchmarks/v3 (the same SimpleTest, built against Nino 3.3.13 from nuget.org) ran before and after the v4
run below, in the same job on the same runner, with the same BenchmarkDotNet settings
(--launchCount 1 --warmupCount 5 --iterationCount 15). MemoryPack runs in both, so its two columns show how much the runner moved.
v4 vs v3 (v3 run before v4)
| case | v3 3.3.13 | v4 | v4 vs v3 | MemoryPack (v4 run) | MemoryPack (v3 run) |
|---|---|---|---|---|---|
| SerializeFixedClass | - | 8.59 ns | - | 15.72 ns | - |
| SerializeFixedClasses | - | 581.99 ns | - | 1.24 μs | - |
| SerializeFixedStruct | - | 8.31 ns | - | 7.70 ns | - |
| SerializeGraph | - | 3.91 μs | - | 19.73 μs | - |
| SerializePolymorphicClassArray | - | 52.41 μs | - | 195.42 μs | - |
| SerializePolymorphicClass | - | 5.36 μs | - | 18.42 μs | - |
| SerializePolymorphicFooArray | - | 5.28 μs | - | 19.30 μs | - |
| SerializeSimpleClass | 112.51 ns | 74.90 ns | 0.67x | 255.62 ns | 255.01 ns |
| SerializeSimpleClasses | 16.72 μs | 8.54 μs | 0.51x | 26.77 μs | 26.58 μs |
| SerializeSimpleStruct | 1.21 ns | 1.13 ns | 0.93x | 2.39 ns | 2.41 ns |
| SerializeSimpleStructs | 11.64 ns | 13.95 ns | 1.20x | 15.92 ns | 17.75 ns |
| SerializeTolerantClass | - | 73.53 ns | - | 319.19 ns | - |
| SerializeTolerantClasses | - | 8.08 μs | - | 32.55 μs | - |
| SerializeVectors | 3.36 μs | 3.35 μs | 1.00x | 3.36 μs | 3.37 μs |
| DeserializeFixedClass | - | 7.61 ns | - | 17.67 ns | - |
| DeserializeFixedClasses | - | 901.37 ns | - | 954.27 ns | - |
| DeserializeFixedStruct | - | 0.33 ns | - | 0.45 ns | - |
| DeserializeGraph | - | 4.37 μs | - | 14.33 μs | - |
| LeavesNew | - | 2.84 μs | - | 2.80 μs | - |
| LeavesPooledElements | - | 2.00 μs | - | - | - |
| LeavesInPlace | - | 404.04 ns | - | - | - |
| NodeNew | - | 456.01 ns | - | 468.28 ns | - |
| NodePooled | - | 159.17 ns | - | - | - |
| PlainNew | - | 2.20 μs | - | 2.76 μs | - |
| DeserializePolymorphicClassArray | - | 216.65 μs | - | 295.36 μs | - |
| DeserializePolymorphicClass | - | 15.13 μs | - | 21.71 μs | - |
| DeserializePolymorphicFooArray | - | 14.00 μs | - | 20.73 μs | - |
| DeserializeNew | - | 375.36 ns | - | 490.57 ns | - |
| DeserializePooled | - | 189.82 ns | - | - | - |
| DeserializeSimpleClass | 401.52 ns | 380.76 ns | 0.95x | 513.58 ns | 495.49 ns |
| DeserializeSimpleClasses | 43.81 μs | 39.64 μs | 0.90x | 49.53 μs | 49.34 μs |
| DeserializeSimpleStruct | 0.34 ns | 0.33 ns | 0.97x | 0.33 ns | 0.29 ns |
| DeserializeSimpleStructs | 76.94 ns | 74.39 ns | 0.97x | 85.41 ns | 85.71 ns |
| DeserializeTolerantClass | - | 377.48 ns | - | 552.40 ns | - |
| DeserializeTolerantClasses | - | 39.97 μs | - | 55.10 μs | - |
| DeserializeVectors | 89.09 μs | 90.55 μs | 1.02x | 89.59 μs | 89.15 μs |
v4 vs v3 = mean(v4) / mean(v3); below 1.00x means v4 is faster.
MemoryPack drift (v4 run / v3 run): min 0.90x, max 1.13x (same code in both runs; the spread is the noise floor of this comparison).
v4 vs v3 (v3 run after v4)
| case | v3 3.3.13 | v4 | v4 vs v3 | MemoryPack (v4 run) | MemoryPack (v3 run) |
|---|---|---|---|---|---|
| SerializeFixedClass | - | 8.59 ns | - | 15.72 ns | - |
| SerializeFixedClasses | - | 581.99 ns | - | 1.24 μs | - |
| SerializeFixedStruct | - | 8.31 ns | - | 7.70 ns | - |
| SerializeGraph | - | 3.91 μs | - | 19.73 μs | - |
| SerializePolymorphicClassArray | - | 52.41 μs | - | 195.42 μs | - |
| SerializePolymorphicClass | - | 5.36 μs | - | 18.42 μs | - |
| SerializePolymorphicFooArray | - | 5.28 μs | - | 19.30 μs | - |
| SerializeSimpleClass | 112.33 ns | 74.90 ns | 0.67x | 255.62 ns | 249.27 ns |
| SerializeSimpleClasses | 16.93 μs | 8.54 μs | 0.50x | 26.77 μs | 26.58 μs |
| SerializeSimpleStruct | 1.29 ns | 1.13 ns | 0.88x | 2.39 ns | 2.42 ns |
| SerializeSimpleStructs | 11.75 ns | 13.95 ns | 1.19x | 15.92 ns | 14.28 ns |
| SerializeTolerantClass | - | 73.53 ns | - | 319.19 ns | - |
| SerializeTolerantClasses | - | 8.08 μs | - | 32.55 μs | - |
| SerializeVectors | 3.36 μs | 3.35 μs | 1.00x | 3.36 μs | 3.35 μs |
| DeserializeFixedClass | - | 7.61 ns | - | 17.67 ns | - |
| DeserializeFixedClasses | - | 901.37 ns | - | 954.27 ns | - |
| DeserializeFixedStruct | - | 0.33 ns | - | 0.45 ns | - |
| DeserializeGraph | - | 4.37 μs | - | 14.33 μs | - |
| LeavesNew | - | 2.84 μs | - | 2.80 μs | - |
| LeavesPooledElements | - | 2.00 μs | - | - | - |
| LeavesInPlace | - | 404.04 ns | - | - | - |
| NodeNew | - | 456.01 ns | - | 468.28 ns | - |
| NodePooled | - | 159.17 ns | - | - | - |
| PlainNew | - | 2.20 μs | - | 2.76 μs | - |
| DeserializePolymorphicClassArray | - | 216.65 μs | - | 295.36 μs | - |
| DeserializePolymorphicClass | - | 15.13 μs | - | 21.71 μs | - |
| DeserializePolymorphicFooArray | - | 14.00 μs | - | 20.73 μs | - |
| DeserializeNew | - | 375.36 ns | - | 490.57 ns | - |
| DeserializePooled | - | 189.82 ns | - | - | - |
| DeserializeSimpleClass | 406.49 ns | 380.76 ns | 0.94x | 513.58 ns | 492.41 ns |
| DeserializeSimpleClasses | 42.61 μs | 39.64 μs | 0.93x | 49.53 μs | 49.33 μs |
| DeserializeSimpleStruct | 0.34 ns | 0.33 ns | 0.99x | 0.33 ns | 0.33 ns |
| DeserializeSimpleStructs | 76.94 ns | 74.39 ns | 0.97x | 85.41 ns | 85.99 ns |
| DeserializeTolerantClass | - | 377.48 ns | - | 552.40 ns | - |
| DeserializeTolerantClasses | - | 39.97 μs | - | 55.10 μs | - |
| DeserializeVectors | 90.23 μs | 90.55 μs | 1.00x | 89.59 μs | 87.24 μs |
v4 vs v3 = mean(v4) / mean(v3); below 1.00x means v4 is faster.
MemoryPack drift (v4 run / v3 run): min 0.99x, max 1.11x (same code in both runs; the spread is the noise floor of this comparison).
v3 3.3.13 report (run before v4)
BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
INTEL XEON PLATINUM 8573C 2.30GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.402
[Host] : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v4
ShortRun-.NET 10.0 : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v4
Job=ShortRun-.NET 10.0 Runtime=.NET 10.0 Server=True
IterationCount=15 LaunchCount=1 WarmupCount=5
| Method | Mean | Min | Max | Ratio | Payload | Gen0 | Gen1 | Gen2 | Allocated | Alloc Ratio |
|---|---|---|---|---|---|---|---|---|---|---|
| NinoDeserializeSimpleClass | 401.5247 ns | 398.5115 ns | 405.1599 ns | 1.00 | - | 0.2308 | - | - | 2552 B | 1.00 |
| MemoryPackDeserializeSimpleClass | 495.4890 ns | 492.1147 ns | 499.6695 ns | 1.23 | - | 0.2413 | - | - | 2528 B | 0.99 |
| MessagePackDeserializeSimpleClass | 1,361.0652 ns | 1,334.9666 ns | 1,376.1391 ns | 3.39 | - | 0.4940 | 0.0038 | - | 2528 B | 0.99 |
| NinoSerializeSimpleClass | 112.5101 ns | 112.2143 ns | 112.7128 ns | 1.00 | 1.13KB | - | - | - | - | NA |
| MemoryPackSerializeSimpleClass | 255.0119 ns | 253.6374 ns | 257.2797 ns | 2.27 | 1.12KB | - | - | - | - | NA |
| MessagePackSerializeSimpleClass | 626.3481 ns | 624.0476 ns | 629.8347 ns | 5.57 | 1.09KB | - | - | - | - | NA |
| NinoDeserializeSimpleClasses | 43,806.8036 ns | 43,354.3807 ns | 44,375.5377 ns | 1.00 | - | 18.7988 | 5.7373 | - | 262424 B | 1.00 |
| MemoryPackDeserializeSimpleClasses | 49,343.6637 ns | 48,892.2917 ns | 50,173.2157 ns | 1.13 | - | 18.0664 | 5.4932 | - | 253624 B | 0.97 |
| MessagePackDeserializeSimpleClasses | 145,442.8283 ns | 143,787.1105 ns | 148,797.1671 ns | 3.32 | - | 18.3105 | 5.1270 | - | 253624 B | 0.97 |
| NinoSerializeSimpleClasses | 16,718.5909 ns | 16,618.2149 ns | 16,865.5096 ns | 1.00 | 112.5KB | - | - | - | - | NA |
| MemoryPackSerializeSimpleClasses | 26,584.4494 ns | 26,534.2670 ns | 26,684.4716 ns | 1.59 | 112.11KB | - | - | - | - | NA |
| MessagePackSerializeSimpleClasses | 65,307.1761 ns | 65,208.9781 ns | 65,485.4308 ns | 3.91 | 108.6KB | - | - | - | - | NA |
| NinoDeserializeSimpleStruct | 0.3434 ns | 0.3410 ns | 0.3527 ns | 1.00 | - | - | - | - | - | NA |
| MemoryPackDeserializeSimpleStruct | 0.2935 ns | 0.2841 ns | 0.3051 ns | 0.85 | - | - | - | - | - | NA |
| MessagePackDeserializeSimpleStruct | 50.0961 ns | 50.0085 ns | 50.3536 ns | 145.88 | - | - | - | - | - | NA |
| NinoSerializeSimpleStruct | 1.2147 ns | 1.2053 ns | 1.2311 ns | 1.00 | 12B | - | - | - | - | NA |
| MemoryPackSerializeSimpleStruct | 2.4084 ns | 2.4027 ns | 2.4167 ns | 1.98 | 12B | - | - | - | - | NA |
| MessagePackSerializeSimpleStruct | 34.6104 ns | 34.4419 ns | 34.8123 ns | 28.49 | 16B | - | - | - | - | NA |
| NinoDeserializeSimpleStructs | 76.9449 ns | 76.0638 ns | 77.8063 ns | 1.00 | - | 0.1214 | - | - | 1224 B | 1.00 |
| MemoryPackDeserializeSimpleStructs | 85.7092 ns | 83.9495 ns | 88.1269 ns | 1.11 | - | 0.1214 | - | - | 1224 B | 1.00 |
| MessagePackDeserializeSimpleStructs | 2,459.8933 ns | 2,439.1549 ns | 2,495.2140 ns | 31.97 | - | 0.1793 | 0.0038 | 0.0038 | - | 0.00 |
| NinoSerializeSimpleStructs | 11.6433 ns | 11.6162 ns | 11.6980 ns | 1.00 | 1.18KB | - | - | - | - | NA |
| MemoryPackSerializeSimpleStructs | 17.7529 ns | 17.7349 ns | 17.7719 ns | 1.52 | 1.18KB | - | - | - | - | NA |
| MessagePackSerializeSimpleStructs | 2,295.3860 ns | 2,290.3193 ns | 2,304.7737 ns | 197.14 | 1.57KB | - | - | - | - | NA |
| NinoDeserializeVectors | 89,088.7381 ns | 77,964.6777 ns | 95,771.5139 ns | 1.00 | - | 15.1367 | 15.1367 | 15.1367 | 160025 B | 1.00 |
| MemoryPackDeserializeVectors | 89,152.3167 ns | 80,206.7575 ns | 95,085.8226 ns | 1.00 | - | 15.5029 | 15.5029 | 15.5029 | 160025 B | 1.00 |
| MessagePackDeserializeVectors | 267,122.8388 ns | 257,949.5430 ns | 285,311.6113 ns | 3.01 | - | 18.5547 | 18.5547 | 18.5547 | - | 0.00 |
| NinoSerializeVectors | 3,361.2001 ns | 3,351.2868 ns | 3,372.9757 ns | 1.00 | 156.25KB | - | - | - | - | NA |
| MemoryPackSerializeVectors | 3,367.4243 ns | 3,353.2953 ns | 3,399.5452 ns | 1.00 | 156.25KB | - | - | - | - | NA |
| MessagePackSerializeVectors | 100,873.0675 ns | 100,148.7755 ns | 103,099.8116 ns | 30.01 | 205.08KB | - | - | - | - | NA |
v3 3.3.13 report (run after v4)
BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
INTEL XEON PLATINUM 8573C 2.30GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.402
[Host] : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v4
ShortRun-.NET 10.0 : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v4
Job=ShortRun-.NET 10.0 Runtime=.NET 10.0 Server=True
IterationCount=15 LaunchCount=1 WarmupCount=5
| Method | Mean | Min | Max | Ratio | Payload | Gen0 | Gen1 | Gen2 | Allocated | Alloc Ratio |
|---|---|---|---|---|---|---|---|---|---|---|
| NinoDeserializeSimpleClass | 406.4946 ns | 403.7781 ns | 417.3349 ns | 1.00 | - | 0.2260 | 0.0005 | - | 2552 B | 1.00 |
| MemoryPackDeserializeSimpleClass | 492.4116 ns | 490.2822 ns | 495.9748 ns | 1.21 | - | 0.2422 | - | - | 2528 B | 0.99 |
| MessagePackDeserializeSimpleClass | 1,316.6970 ns | 1,285.0187 ns | 1,353.6483 ns | 3.24 | - | 0.3662 | 0.0076 | 0.0057 | - | 0.00 |
| NinoSerializeSimpleClass | 112.3279 ns | 112.2044 ns | 112.4602 ns | 1.00 | 1.13KB | - | - | - | - | NA |
| MemoryPackSerializeSimpleClass | 249.2725 ns | 248.3505 ns | 250.3977 ns | 2.22 | 1.12KB | - | - | - | - | NA |
| MessagePackSerializeSimpleClass | 619.9171 ns | 618.6877 ns | 621.9991 ns | 5.52 | 1.09KB | - | - | - | - | NA |
| NinoDeserializeSimpleClasses | 42,611.5260 ns | 42,298.2708 ns | 42,884.4865 ns | 1.00 | - | 18.8599 | 5.7373 | - | 262424 B | 1.00 |
| MemoryPackDeserializeSimpleClasses | 49,334.0550 ns | 48,783.7455 ns | 50,074.8087 ns | 1.16 | - | 17.8833 | 5.3101 | - | 253624 B | 0.97 |
| MessagePackDeserializeSimpleClasses | 146,577.3963 ns | 145,711.5732 ns | 147,690.8123 ns | 3.44 | - | 18.3105 | 5.1270 | - | 253624 B | 0.97 |
| NinoSerializeSimpleClasses | 16,929.7747 ns | 16,798.0477 ns | 17,044.9799 ns | 1.00 | 112.5KB | - | - | - | - | NA |
| MemoryPackSerializeSimpleClasses | 26,578.7998 ns | 26,495.8434 ns | 26,731.5272 ns | 1.57 | 112.11KB | - | - | - | - | NA |
| MessagePackSerializeSimpleClasses | 63,637.5052 ns | 63,379.5989 ns | 64,279.0181 ns | 3.76 | 108.6KB | - | - | - | - | NA |
| NinoDeserializeSimpleStruct | 0.3350 ns | 0.3233 ns | 0.3680 ns | 1.00 | - | - | - | - | - | NA |
| MemoryPackDeserializeSimpleStruct | 0.3271 ns | 0.2971 ns | 0.4261 ns | 0.98 | - | - | - | - | - | NA |
| MessagePackDeserializeSimpleStruct | 51.2238 ns | 50.6868 ns | 52.6929 ns | 153.20 | - | - | - | - | - | NA |
| NinoSerializeSimpleStruct | 1.2867 ns | 1.2517 ns | 1.3590 ns | 1.00 | 12B | - | - | - | - | NA |
| MemoryPackSerializeSimpleStruct | 2.4214 ns | 2.4056 ns | 2.4689 ns | 1.88 | 12B | - | - | - | - | NA |
| MessagePackSerializeSimpleStruct | 35.3773 ns | 35.2895 ns | 35.4943 ns | 27.52 | 16B | - | - | - | - | NA |
| NinoDeserializeSimpleStructs | 76.9435 ns | 75.8688 ns | 78.9587 ns | 1.00 | - | 0.1214 | - | - | 1224 B | 1.00 |
| MemoryPackDeserializeSimpleStructs | 85.9869 ns | 85.0470 ns | 87.2034 ns | 1.12 | - | 0.1214 | - | - | 1224 B | 1.00 |
| MessagePackDeserializeSimpleStructs | 2,421.9407 ns | 2,409.6654 ns | 2,435.7893 ns | 31.48 | - | 0.1793 | 0.0038 | 0.0038 | - | 0.00 |
| NinoSerializeSimpleStructs | 11.7471 ns | 11.7183 ns | 11.8378 ns | 1.00 | 1.18KB | - | - | - | - | NA |
| MemoryPackSerializeSimpleStructs | 14.2819 ns | 14.1572 ns | 14.5664 ns | 1.22 | 1.18KB | - | - | - | - | NA |
| MessagePackSerializeSimpleStructs | 2,330.5941 ns | 2,322.9924 ns | 2,342.7892 ns | 198.40 | 1.57KB | - | - | - | - | NA |
| NinoDeserializeVectors | 90,225.4006 ns | 84,204.1411 ns | 95,415.2555 ns | 1.00 | - | 14.6484 | 14.6484 | 14.6484 | 160024 B | 1.00 |
| MemoryPackDeserializeVectors | 87,239.0848 ns | 84,438.0891 ns | 90,312.4838 ns | 0.97 | - | 15.8691 | 15.8691 | 15.8691 | 160026 B | 1.00 |
| MessagePackDeserializeVectors | 268,023.1618 ns | 251,123.6536 ns | 288,504.8835 ns | 2.97 | - | 17.5781 | 17.5781 | 17.5781 | 160028 B | 1.00 |
| NinoSerializeVectors | 3,357.2277 ns | 3,353.5681 ns | 3,364.4610 ns | 1.00 | 156.25KB | - | - | - | - | NA |
| MemoryPackSerializeVectors | 3,354.9766 ns | 3,351.7879 ns | 3,364.3001 ns | 1.00 | 156.25KB | - | - | - | - | NA |
| MessagePackSerializeVectors | 103,329.6144 ns | 102,999.2165 ns | 104,243.5925 ns | 30.78 | 205.08KB | - | - | - | - | NA |
📊 Performance Report
Click to expand benchmark results
BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
INTEL XEON PLATINUM 8573C 2.30GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.402
[Host] : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v4
ShortRun-.NET 10.0 : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v4
Job=ShortRun-.NET 10.0 Runtime=.NET 10.0 Server=True
IterationCount=15 LaunchCount=1 WarmupCount=5
| Type | Method | Mean | Min | Max | Ratio | Payload | Gen0 | Gen1 | Gen2 | Allocated | Alloc Ratio |
|---|---|---|---|---|---|---|---|---|---|---|---|
| FixedSizeTest | NinoDeserializeFixedClass | 7.6106 ns | 7.5921 ns | 7.6322 ns | 1.00 | - | 0.0055 | - | - | 56 B | 1.00 |
| FixedSizeTest | MemoryPackDeserializeFixedClass | 17.6726 ns | 17.5610 ns | 17.7995 ns | 2.32 | - | 0.0214 | - | - | 56 B | 1.00 |
| FixedSizeTest | NinoSerializeFixedClass | 8.5865 ns | 8.4575 ns | 8.9917 ns | 1.00 | 41 B | 0.0069 | - | - | 72 B | 1.00 |
| FixedSizeTest | MemoryPackSerializeFixedClass | 15.7223 ns | 15.5734 ns | 15.8904 ns | 1.83 | 41 B | 0.0094 | - | - | 72 B | 1.00 |
| FixedSizeTest | NinoDeserializeFixedClasses | 901.3663 ns | 895.4491 ns | 909.1110 ns | 1.00 | - | 0.5608 | 0.0038 | - | 6424 B | 1.00 |
| FixedSizeTest | MemoryPackDeserializeFixedClasses | 954.2680 ns | 948.9954 ns | 961.3330 ns | 1.06 | - | 0.5798 | 0.0038 | - | 6424 B | 1.00 |
| FixedSizeTest | NinoSerializeFixedClasses | 581.9859 ns | 579.1945 ns | 585.4747 ns | 1.00 | 4,104 B | 0.3633 | - | - | 4128 B | 1.00 |
| FixedSizeTest | MemoryPackSerializeFixedClasses | 1,242.7984 ns | 1,239.0210 ns | 1,249.5967 ns | 2.14 | 4,104 B | 0.5341 | - | - | 4128 B | 1.00 |
| FixedSizeTest | NinoDeserializeFixedStruct | 0.3303 ns | 0.3224 ns | 0.3663 ns | 1.00 | - | - | - | - | - | NA |
| FixedSizeTest | MemoryPackDeserializeFixedStruct | 0.4485 ns | 0.4341 ns | 0.4834 ns | 1.36 | - | - | - | - | - | NA |
| FixedSizeTest | NinoSerializeFixedStruct | 8.3146 ns | 8.2724 ns | 8.3866 ns | 1.00 | 40 B | 0.0062 | - | - | 64 B | 1.00 |
| FixedSizeTest | MemoryPackSerializeFixedStruct | 7.7028 ns | 7.6579 ns | 7.7618 ns | 0.93 | 40 B | 0.0062 | - | - | 64 B | 1.00 |
| ReferenceTest | NinoDeserializeGraph | 4,365.1454 ns | 4,334.1402 ns | 4,427.6354 ns | 1.00 | - | 1.3809 | 0.0229 | - | 14104 B | 1.00 |
| ReferenceTest | MemoryPackDeserializeGraph | 14,325.3882 ns | 14,093.6707 ns | 14,737.4675 ns | 3.28 | - | 2.7618 | 0.1221 | - | 14104 B | 1.00 |
| ReferenceTest | NinoSerializeGraph | 3,907.9743 ns | 3,896.8077 ns | 3,917.4589 ns | 1.00 | 5,948 B | - | - | - | - | NA |
| ReferenceTest | MemoryPackSerializeGraph | 19,729.0225 ns | 19,673.5552 ns | 19,809.3234 ns | 5.05 | 5,584 B | - | - | - | - | NA |
| PooledGraphTest | NinoLeavesNew | 2,840.5247 ns | 2,805.8934 ns | 2,904.9623 ns | 1.00 | - | 1.2665 | 0.0229 | - | 13656 B | 1.00 |
| PooledGraphTest | NinoLeavesPooledElements | 1,997.0792 ns | 1,942.5092 ns | 2,080.8372 ns | 0.70 | - | 0.1144 | 0.0038 | 0.0038 | 856 B | 0.06 |
| PooledGraphTest | NinoLeavesInPlace | 404.0373 ns | 400.8489 ns | 408.6002 ns | 0.14 | - | - | - | - | - | 0.00 |
| PooledGraphTest | MemoryPackLeavesNew | 2,803.2291 ns | 2,787.8693 ns | 2,827.4813 ns | 0.99 | - | 1.2779 | 0.0267 | - | 13656 B | 1.00 |
| PooledGraphTest | MemoryPackLeavesOverwrite | 3,288.1591 ns | 3,267.1003 ns | 3,335.3340 ns | 1.16 | - | 1.2512 | 0.0076 | - | 12800 B | 0.94 |
| PooledGraphTest | NinoNodeNew | 456.0116 ns | 449.8252 ns | 464.4218 ns | 1.00 | - | 0.2098 | 0.0005 | - | 2192 B | 1.00 |
| PooledGraphTest | NinoNodePooled | 159.1698 ns | 158.1384 ns | 161.8578 ns | 0.35 | - | - | - | - | - | 0.00 |
| PooledGraphTest | MemoryPackNodeNew | 468.2846 ns | 466.8498 ns | 469.5685 ns | 1.03 | - | 0.2108 | - | - | 2192 B | 1.00 |
| PooledGraphTest | MemoryPackNodeOverwrite | 390.1697 ns | 384.5761 ns | 402.2261 ns | 0.86 | - | 0.1345 | - | - | 1024 B | 0.47 |
| PooledGraphTest | NinoPlainNew | 2,199.3329 ns | 2,175.8491 ns | 2,240.4843 ns | 1.00 | - | 1.1139 | 0.0153 | - | 12856 B | 1.00 |
| PooledGraphTest | MemoryPackPlainNew | 2,764.6177 ns | 2,758.2868 ns | 2,771.2838 ns | 1.26 | - | 1.1940 | 0.0191 | - | 12856 B | 1.00 |
| PolymorphicTest | NinoDeserializePolymorphicClassArray | 216,648.3540 ns | 212,755.7433 ns | 221,884.1764 ns | 1.00 | - | 30.0293 | 14.1602 | - | 745624 B | 1.00 |
| PolymorphicTest | MemoryPackDeserializePolymorphicClassArray | 295,360.1647 ns | 287,547.2617 ns | 301,962.9541 ns | 1.36 | - | 31.2500 | 15.1367 | - | 745624 B | 1.00 |
| PolymorphicTest | MessagePackDeserializePolymorphicClassArray | 1,249,446.8818 ns | 1,236,721.4844 ns | 1,268,733.8105 ns | 5.77 | - | 50.7813 | 19.5313 | - | 1162424 B | 1.56 |
| PolymorphicTest | NinoSerializePolymorphicClassArray | 52,405.3899 ns | 52,275.1849 ns | 52,541.0368 ns | 1.00 | 397,304 B | - | - | - | - | NA |
| PolymorphicTest | MemoryPackSerializePolymorphicClassArray | 195,421.1606 ns | 194,660.4934 ns | 196,691.9690 ns | 3.73 | 384,404 B | - | - | - | - | NA |
| PolymorphicTest | MessagePackSerializePolymorphicClassArray | 626,229.0184 ns | 625,038.5957 ns | 628,002.8174 ns | 11.95 | 487,103 B | - | - | - | - | NA |
| PolymorphicTest | NinoDeserializePolymorphicClass | 15,128.2569 ns | 15,029.1318 ns | 15,284.9519 ns | 1.00 | - | 7.2937 | 1.0376 | - | 79688 B | 1.00 |
| PolymorphicTest | MemoryPackDeserializePolymorphicClass | 21,713.0114 ns | 21,497.0263 ns | 22,053.8283 ns | 1.44 | - | 7.1716 | 0.8850 | - | 79688 B | 1.00 |
| PolymorphicTest | MessagePackDeserializePolymorphicClass | 152,109.0846 ns | 148,769.9026 ns | 158,304.3799 ns | 10.05 | - | 7.8125 | 0.9766 | - | 83856 B | 1.05 |
| PolymorphicTest | NinoSerializePolymorphicClass | 5,356.3199 ns | 5,335.2428 ns | 5,416.5073 ns | 1.00 | 53,789 B | - | - | - | - | NA |
| PolymorphicTest | MemoryPackSerializePolymorphicClass | 18,418.6922 ns | 18,372.2670 ns | 18,504.1286 ns | 3.44 | 51,760 B | - | - | - | - | NA |
| PolymorphicTest | MessagePackSerializePolymorphicClass | 86,379.3223 ns | 86,170.3160 ns | 86,673.2317 ns | 16.13 | 66,859 B | - | - | - | - | NA |
| PolymorphicTest | NinoDeserializePolymorphicFooArray | 14,004.7206 ns | 13,861.9069 ns | 14,072.9877 ns | 1.00 | - | 6.8359 | 0.9308 | - | 76024 B | 1.00 |
| PolymorphicTest | MemoryPackDeserializePolymorphicFooArray | 20,730.3241 ns | 20,632.4152 ns | 20,775.8767 ns | 1.48 | - | 7.0801 | 0.9155 | - | 76024 B | 1.00 |
| PolymorphicTest | MessagePackDeserializePolymorphicFooArray | 145,703.6162 ns | 144,839.2200 ns | 146,675.1746 ns | 10.40 | - | 7.5684 | 1.2207 | 0.2441 | 76024 B | 1.00 |
| PolymorphicTest | NinoSerializePolymorphicFooArray | 5,275.2075 ns | 5,199.9828 ns | 5,440.3622 ns | 1.00 | 52,404 B | - | - | - | - | NA |
| PolymorphicTest | MemoryPackSerializePolymorphicFooArray | 19,299.2704 ns | 19,230.0865 ns | 19,404.0405 ns | 3.66 | 50,404 B | - | - | - | - | NA |
| PolymorphicTest | MessagePackSerializePolymorphicFooArray | 85,410.3433 ns | 85,218.4164 ns | 85,809.8414 ns | 16.19 | 65,203 B | - | - | - | - | NA |
| PooledTest | NinoDeserializeNew | 375.3646 ns | 371.7591 ns | 380.7425 ns | 1.00 | - | 0.2284 | 0.0005 | - | 2536 B | 1.00 |
| PooledTest | NinoDeserializePooled | 189.8191 ns | 188.3805 ns | 192.6651 ns | 0.51 | - | - | - | - | - | 0.00 |
| PooledTest | MemoryPackDeserializeNew | 490.5747 ns | 488.2908 ns | 492.7180 ns | 1.31 | - | 0.2422 | - | - | 2536 B | 1.00 |
| PooledTest | MemoryPackDeserializeOverwrite | 416.0845 ns | 414.3776 ns | 419.6391 ns | 1.11 | - | 0.1426 | 0.0005 | - | 1080 B | 0.43 |
| SimpleTest | NinoDeserializeSimpleClass | 380.7646 ns | 378.9197 ns | 383.4162 ns | 1.00 | - | 0.2170 | 0.0005 | - | 2528 B | 1.00 |
| SimpleTest | MemoryPackDeserializeSimpleClass | 513.5773 ns | 503.7421 ns | 532.6776 ns | 1.35 | - | 0.2413 | - | - | 2528 B | 1.00 |
| SimpleTest | MessagePackDeserializeSimpleClass | 1,313.3418 ns | 1,281.3447 ns | 1,340.5472 ns | 3.45 | - | 0.3014 | 0.0038 | 0.0019 | - | 0.00 |
| SimpleTest | NinoSerializeSimpleClass | 74.8990 ns | 74.4463 ns | 76.2229 ns | 1.00 | 1,150 B | - | - | - | - | NA |
| SimpleTest | MemoryPackSerializeSimpleClass | 255.6176 ns | 255.1074 ns | 256.3441 ns | 3.41 | 1,148 B | - | - | - | - | NA |
| SimpleTest | MessagePackSerializeSimpleClass | 642.9506 ns | 642.2646 ns | 643.8763 ns | 8.58 | 1,112 B | - | - | - | - | NA |
| SimpleTest | NinoDeserializeSimpleClasses | 39,642.4479 ns | 39,273.1453 ns | 40,217.1912 ns | 1.00 | - | 18.1274 | 5.4321 | - | 253624 B | 1.00 |
| SimpleTest | MemoryPackDeserializeSimpleClasses | 49,528.6921 ns | 49,122.7046 ns | 50,571.3454 ns | 1.25 | - | 18.0664 | 5.3101 | - | 253624 B | 1.00 |
| SimpleTest | MessagePackDeserializeSimpleClasses | 145,102.2537 ns | 144,662.1410 ns | 145,552.3331 ns | 3.66 | - | 18.3105 | 5.6152 | - | 253624 B | 1.00 |
| SimpleTest | NinoSerializeSimpleClasses | 8,535.6652 ns | 8,386.3441 ns | 8,943.9051 ns | 1.00 | 115,004 B | - | - | - | - | NA |
| SimpleTest | MemoryPackSerializeSimpleClasses | 26,767.8018 ns | 26,631.8954 ns | 27,137.2081 ns | 3.14 | 114,804 B | - | - | - | - | NA |
| SimpleTest | MessagePackSerializeSimpleClasses | 64,136.3732 ns | 63,797.8722 ns | 65,311.3947 ns | 7.52 | 111,201 B | - | - | - | - | NA |
| SimpleTest | NinoDeserializeSimpleStruct | 0.3320 ns | 0.3242 ns | 0.3594 ns | 1.00 | - | - | - | - | - | NA |
| SimpleTest | MemoryPackDeserializeSimpleStruct | 0.3326 ns | 0.3308 ns | 0.3367 ns | 1.00 | - | - | - | - | - | NA |
| SimpleTest | MessagePackDeserializeSimpleStruct | 50.8375 ns | 50.5541 ns | 51.4804 ns | 153.25 | - | - | - | - | - | NA |
| SimpleTest | NinoSerializeSimpleStruct | 1.1323 ns | 1.1303 ns | 1.1378 ns | 1.00 | 12 B | - | - | - | - | NA |
| SimpleTest | MemoryPackSerializeSimpleStruct | 2.3886 ns | 2.3857 ns | 2.3932 ns | 2.11 | 12 B | - | - | - | - | NA |
| SimpleTest | MessagePackSerializeSimpleStruct | 35.3680 ns | 35.1147 ns | 36.2279 ns | 31.23 | 16 B | - | - | - | - | NA |
| SimpleTest | NinoDeserializeSimpleStructs | 74.3919 ns | 73.9201 ns | 74.8484 ns | 1.00 | - | 0.1214 | - | - | 1224 B | 1.00 |
| SimpleTest | MemoryPackDeserializeSimpleStructs | 85.4078 ns | 84.9281 ns | 86.4022 ns | 1.15 | - | 0.1214 | - | - | 1224 B | 1.00 |
| SimpleTest | MessagePackDeserializeSimpleStructs | 2,407.9734 ns | 2,370.6897 ns | 2,446.4769 ns | 32.37 | - | 0.1183 | - | - | 1224 B | 1.00 |
| SimpleTest | NinoSerializeSimpleStructs | 13.9464 ns | 13.9035 ns | 13.9932 ns | 1.00 | 1,204 B | - | - | - | - | NA |
| SimpleTest | MemoryPackSerializeSimpleStructs | 15.9218 ns | 15.7953 ns | 16.0382 ns | 1.14 | 1,204 B | - | - | - | - | NA |
| SimpleTest | MessagePackSerializeSimpleStructs | 2,327.1265 ns | 2,323.0326 ns | 2,335.0222 ns | 166.86 | 1,603 B | - | - | - | - | NA |
| VersionTolerantTest | NinoDeserializeTolerantClass | 377.4833 ns | 376.4227 ns | 379.7513 ns | 1.00 | - | 0.2198 | 0.0005 | - | 2528 B | 1.00 |
| VersionTolerantTest | MemoryPackDeserializeTolerantClass | 552.3958 ns | 541.2939 ns | 572.4304 ns | 1.46 | - | 0.2441 | - | - | 2528 B | 1.00 |
| VersionTolerantTest | NinoSerializeTolerantClass | 73.5293 ns | 73.2316 ns | 74.2051 ns | 1.00 | 1,154 B | - | - | - | - | NA |
| VersionTolerantTest | MemoryPackSerializeTolerantClass | 319.1900 ns | 318.2443 ns | 321.1138 ns | 4.34 | 1,164 B | - | - | - | - | NA |
| VersionTolerantTest | NinoDeserializeTolerantClasses | 39,970.3033 ns | 39,703.7886 ns | 40,319.8814 ns | 1.00 | - | 18.1885 | 5.3711 | - | 253624 B | 1.00 |
| VersionTolerantTest | MemoryPackDeserializeTolerantClasses | 55,098.2072 ns | 54,143.5328 ns | 57,168.5474 ns | 1.38 | - | 17.8833 | 5.4932 | - | 253624 B | 1.00 |
| VersionTolerantTest | NinoSerializeTolerantClasses | 8,082.5219 ns | 8,063.1470 ns | 8,107.4562 ns | 1.00 | 115,404 B | - | - | - | - | NA |
| VersionTolerantTest | MemoryPackSerializeTolerantClasses | 32,553.4064 ns | 32,495.4705 ns | 32,661.4170 ns | 4.03 | 116,404 B | - | - | - | - | NA |
| SimpleTest | NinoDeserializeVectors | 90,546.6613 ns | 83,428.0989 ns | 95,402.8724 ns | 1.00 | - | 14.2822 | 14.2822 | 14.2822 | 160028 B | 1.00 |
| SimpleTest | MemoryPackDeserializeVectors | 89,594.2866 ns | 83,985.6847 ns | 97,849.2910 ns | 0.99 | - | 15.3809 | 15.3809 | 15.3809 | 160030 B | 1.00 |
| SimpleTest | MessagePackDeserializeVectors | 257,303.1025 ns | 246,737.2532 ns | 264,144.2131 ns | 2.85 | - | 14.1602 | 14.1602 | 14.1602 | 160028 B | 1.00 |
| SimpleTest | NinoSerializeVectors | 3,351.5291 ns | 3,346.6568 ns | 3,356.7393 ns | 1.00 | 160,004 B | - | - | - | - | NA |
| SimpleTest | MemoryPackSerializeVectors | 3,362.3779 ns | 3,351.3807 ns | 3,397.0542 ns | 1.00 | 160,004 B | - | - | - | - | NA |
| SimpleTest | MessagePackSerializeVectors | 100,356.0211 ns | 100,094.1328 ns | 100,716.6783 ns | 29.94 | 210,003 B | - | - | - | - | NA |
Benchmark generated automatically on 2026-10-17 10:07:58 UTC