Repository navigation
v4.0.0-rc.2
Pre-releaseInstall: dotnet add package Nino --version 4.0.0-rc.2 (Unity package: 4.0.0-preview.202)
Wire format
Only these types write different bytes than with rc.1:
- A
[NinoType]struct of another assembly whose members are auto-properties (a positionalrecord struct, for
example) is now copied as raw memory in every build. rc.1 did so when the struct was seen as source (the IDE, a
project reference), but wrote it member by member from a package or a command-line build. A struct, array or list
holding such a struct can therefore differ from an rc.1 package or command-line build where the struct has padding
(#200). nintandnuintmembers are serialized on netstandard (Unity included), as 8 bytes. rc.1 skipped them there with
NINO007.
New
[assembly: NinoTypeLayout]describes how each[NinoType]is written, for compatibility checks between builds
(#197). Layout MetadataNinoRegistry.Remove(assembly)clears what Nino cached for an assembly, so a collectibleAssemblyLoadContextcan
unload it; on .NET 8 and later this runs when the context unloads (#199).
Unloading Assembliesnew NinoArrayBufferWriter(initialCapacity, pool)rents from yourArrayPool<byte>(#198).
Fixes
- Two
[NinoFormerName]on one type are reported as error NINO026; the generator took the first and
NinoTypeId.OfthrewAmbiguousMatchException(#201).
Every change between v4 releases: Changelog.
What's Changed since v4.0.0-rc.1
18 commits
📦 Runtime, generator and analyzer
- Core: NinoArrayBufferWriter takes a caller-supplied ArrayPool (37f374a) by @JasonXuDeveloper
- Core: release collectible assemblies (NinoRegistry.Remove) (9c2e422) by @JasonXuDeveloper
- Generator: publish each [NinoType]'s wire layout as metadata (bd6a732) by @JasonXuDeveloper
- Generator: read another assembly's auto-properties the same from metadata (a102e38) by @JasonXuDeveloper
- Analyzer: a type takes one [NinoFormerName] (NINO026) (aa50dfc) by @JasonXuDeveloper
🐛 Fixes
- Generator: resolve nint and nuint where they are not IntPtr (011d5ca) by @JasonXuDeveloper
♻️ Refactoring and cleanup
- Remove leftovers (06361bb) by @JasonXuDeveloper
📖 Documentation
- Docs: 3.3.13 is the last release of the v3 API (45abe17) by @JasonXuDeveloper
- Docs: rc.2 release notes; the design covers unloading and layout metadata (e6ff3a9) by @JasonXuDeveloper
🧪 Tests
- Tests: run the automatic-unload test on the .NET 8+ Nino.Core only (80a07ce) by @JasonXuDeveloper
🔧 Build, CI and dependencies
- Build without warnings (b3f5ccf) by @JasonXuDeveloper
- .gitignore: keep ignoring Nino.Core's .AssemblyAttributes (343d388) by @JasonXuDeveloper
- Release: list every commit and contributor in the release notes (46ee0f6) by @JasonXuDeveloper
- Add .gitattributes; tidy the .gitignore files (04b25b6) by @JasonXuDeveloper
- Benchmarks: run v3 once, directly before v4 (1383de3) by @JasonXuDeveloper
- CI: run on ubuntu-26.04 (a789202) by @JasonXuDeveloper
- CI: pin the game-ci CLI version of the Unity tests (195734f) by @JasonXuDeveloper
Other changes
- Unity: keep only the packages the tests use (a2225ad) by @JasonXuDeveloper
Contributors
Thanks to everyone who contributed to this release: @JasonXuDeveloper
Full Changelog: v4.0.0-rc.1...v4.0.0-rc.2
📊 v3 3.3.13 vs v4 (same machine)
Nino v3 3.3.13 (NuGet) against v4.0.0-rc.2, back to back on the same runner
benchmarks/v3 (the same SimpleTest, built against Nino 3.3.13 from nuget.org) ran directly before 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
| case | v3 3.3.13 | v4 | v4 vs v3 | MemoryPack (v4 run) | MemoryPack (v3 run) |
|---|---|---|---|---|---|
| SerializeFixedClass | - | 8.95 ns | - | 17.26 ns | - |
| SerializeFixedClasses | - | 562.88 ns | - | 1.30 μs | - |
| SerializeFixedStruct | - | 8.67 ns | - | 7.05 ns | - |
| SerializeGraph | - | 4.01 μs | - | 20.87 μs | - |
| SerializePolymorphicClassArray | - | 54.26 μs | - | 206.14 μs | - |
| SerializePolymorphicClass | - | 5.57 μs | - | 19.06 μs | - |
| SerializePolymorphicFooArray | - | 5.30 μs | - | 18.87 μs | - |
| SerializeSimpleClass | 121.08 ns | 79.77 ns | 0.66x | 262.33 ns | 262.17 ns |
| SerializeSimpleClasses | 17.40 μs | 9.13 μs | 0.52x | 27.92 μs | 27.92 μs |
| SerializeSimpleStruct | 1.28 ns | 1.11 ns | 0.87x | 2.48 ns | 2.50 ns |
| SerializeSimpleStructs | 12.28 ns | 12.50 ns | 1.02x | 13.17 ns | 14.83 ns |
| SerializeTolerantClass | - | 76.76 ns | - | 333.31 ns | - |
| SerializeTolerantClasses | - | 8.47 μs | - | 34.23 μs | - |
| SerializeVectors | 3.53 μs | 3.50 μs | 0.99x | 3.49 μs | 3.54 μs |
| DeserializeFixedClass | - | 7.96 ns | - | 18.04 ns | - |
| DeserializeFixedClasses | - | 928.57 ns | - | 1.04 μs | - |
| DeserializeFixedStruct | - | 0.31 ns | - | 0.34 ns | - |
| DeserializeGraph | - | 4.67 μs | - | 14.82 μs | - |
| LeavesNew | - | 2.85 μs | - | 2.83 μs | - |
| LeavesPooledElements | - | 2.07 μs | - | - | - |
| LeavesInPlace | - | 462.52 ns | - | - | - |
| NodeNew | - | 481.05 ns | - | 490.56 ns | - |
| NodePooled | - | 171.12 ns | - | - | - |
| PlainNew | - | 2.23 μs | - | 3.03 μs | - |
| DeserializePolymorphicClassArray | - | 229.91 μs | - | 304.14 μs | - |
| DeserializePolymorphicClass | - | 15.99 μs | - | 22.52 μs | - |
| DeserializePolymorphicFooArray | - | 14.72 μs | - | 21.06 μs | - |
| DeserializeNew | - | 418.04 ns | - | 520.93 ns | - |
| DeserializePooled | - | 198.71 ns | - | - | - |
| DeserializeSimpleClass | 414.06 ns | 387.21 ns | 0.94x | 523.76 ns | 533.20 ns |
| DeserializeSimpleClasses | 44.05 μs | 41.51 μs | 0.94x | 52.21 μs | 51.64 μs |
| DeserializeSimpleStruct | 0.35 ns | 0.00 ns | 0.01x | 0.32 ns | 0.33 ns |
| DeserializeSimpleStructs | 79.89 ns | 78.58 ns | 0.98x | 89.00 ns | 88.63 ns |
| DeserializeTolerantClass | - | 393.59 ns | - | 569.93 ns | - |
| DeserializeTolerantClasses | - | 40.06 μs | - | 56.37 μs | - |
| DeserializeVectors | 91.62 μs | 92.97 μs | 1.01x | 94.23 μs | 91.63 μs |
v4 vs v3 = mean(v4) / mean(v3); below 1.00x means v4 is faster.
MemoryPack drift (v4 run / v3 run): min 0.89x, max 1.03x (same code in both runs; the spread is the noise floor of this comparison).
v3 3.3.13 report
BenchmarkDotNet v0.15.8, Linux Ubuntu 26.04.1 LTS (Resolute Raccoon)
INTEL XEON PLATINUM 8573C 3.31GHz, 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 | 414.0598 ns | 404.8757 ns | 428.2833 ns | 1.00 | - | 0.2260 | - | - | 2552 B | 1.00 |
| MemoryPackDeserializeSimpleClass | 533.2007 ns | 513.5039 ns | 559.7653 ns | 1.29 | - | 0.2422 | - | - | 2528 B | 0.99 |
| MessagePackDeserializeSimpleClass | 1,424.7749 ns | 1,391.5295 ns | 1,456.2514 ns | 3.44 | - | 0.3357 | 0.0038 | 0.0038 | - | 0.00 |
| NinoSerializeSimpleClass | 121.0786 ns | 116.5016 ns | 126.8835 ns | 1.00 | 1.13KB | - | - | - | - | NA |
| MemoryPackSerializeSimpleClass | 262.1720 ns | 256.4128 ns | 266.7264 ns | 2.17 | 1.12KB | - | - | - | - | NA |
| MessagePackSerializeSimpleClass | 657.7158 ns | 643.9486 ns | 669.0529 ns | 5.44 | 1.09KB | - | - | - | - | NA |
| NinoDeserializeSimpleClasses | 44,052.8141 ns | 43,034.4359 ns | 45,118.6680 ns | 1.00 | - | 18.8599 | 5.8594 | - | 262424 B | 1.00 |
| MemoryPackDeserializeSimpleClasses | 51,635.5054 ns | 50,017.2853 ns | 53,419.9848 ns | 1.17 | - | 17.9443 | 5.4321 | - | 253624 B | 0.97 |
| MessagePackDeserializeSimpleClasses | 148,377.1468 ns | 145,711.9545 ns | 152,337.4623 ns | 3.37 | - | 18.0664 | 5.1270 | - | 253624 B | 0.97 |
| NinoSerializeSimpleClasses | 17,401.4817 ns | 16,934.1377 ns | 17,877.7633 ns | 1.00 | 112.5KB | - | - | - | - | NA |
| MemoryPackSerializeSimpleClasses | 27,918.4156 ns | 27,640.0568 ns | 28,376.9148 ns | 1.60 | 112.11KB | - | - | - | - | NA |
| MessagePackSerializeSimpleClasses | 67,343.1906 ns | 65,655.7316 ns | 68,447.7802 ns | 3.87 | 108.6KB | - | - | - | - | NA |
| NinoDeserializeSimpleStruct | 0.3459 ns | 0.3042 ns | 0.4255 ns | 1.01 | - | - | - | - | - | NA |
| MemoryPackDeserializeSimpleStruct | 0.3327 ns | 0.2806 ns | 0.3838 ns | 0.97 | - | - | - | - | - | NA |
| MessagePackDeserializeSimpleStruct | 51.2057 ns | 50.6776 ns | 52.2812 ns | 149.19 | - | - | - | - | - | NA |
| NinoSerializeSimpleStruct | 1.2802 ns | 1.2373 ns | 1.3783 ns | 1.00 | 12B | - | - | - | - | NA |
| MemoryPackSerializeSimpleStruct | 2.4981 ns | 2.4235 ns | 2.5762 ns | 1.95 | 12B | - | - | - | - | NA |
| MessagePackSerializeSimpleStruct | 47.7352 ns | 47.1755 ns | 48.1599 ns | 37.33 | 16B | - | - | - | - | NA |
| NinoDeserializeSimpleStructs | 79.8855 ns | 78.1302 ns | 81.2025 ns | 1.00 | - | 0.1214 | - | - | 1224 B | 1.00 |
| MemoryPackDeserializeSimpleStructs | 88.6263 ns | 86.6090 ns | 90.1672 ns | 1.11 | - | 0.1214 | - | - | 1224 B | 1.00 |
| MessagePackDeserializeSimpleStructs | 2,559.9280 ns | 2,524.9336 ns | 2,592.4386 ns | 32.05 | - | 0.1335 | 0.0038 | 0.0038 | - | 0.00 |
| NinoSerializeSimpleStructs | 12.2798 ns | 11.9495 ns | 12.8369 ns | 1.00 | 1.18KB | - | - | - | - | NA |
| MemoryPackSerializeSimpleStructs | 14.8344 ns | 14.4723 ns | 15.2371 ns | 1.21 | 1.18KB | - | - | - | - | NA |
| MessagePackSerializeSimpleStructs | 2,438.3250 ns | 2,376.4934 ns | 2,505.9384 ns | 198.66 | 1.57KB | - | - | - | - | NA |
| NinoDeserializeVectors | 91,619.3605 ns | 86,758.1314 ns | 99,910.8886 ns | 1.00 | - | 15.2588 | 15.2588 | 15.2588 | 160025 B | 1.00 |
| MemoryPackDeserializeVectors | 91,629.3846 ns | 87,839.6074 ns | 96,532.9772 ns | 1.00 | - | 15.6250 | 15.6250 | 15.6250 | 160025 B | 1.00 |
| MessagePackDeserializeVectors | 267,629.7093 ns | 256,361.9722 ns | 279,932.0488 ns | 2.93 | - | 18.0664 | 18.0664 | 18.0664 | 160029 B | 1.00 |
| NinoSerializeVectors | 3,534.9891 ns | 3,452.9625 ns | 3,646.0755 ns | 1.00 | 156.25KB | - | - | - | - | NA |
| MemoryPackSerializeVectors | 3,543.2336 ns | 3,506.8120 ns | 3,575.4920 ns | 1.00 | 156.25KB | - | - | - | - | NA |
| MessagePackSerializeVectors | 105,737.9612 ns | 103,902.0030 ns | 107,307.6758 ns | 29.92 | 205.08KB | - | - | - | - | NA |
📊 Performance Report
Click to expand benchmark results
BenchmarkDotNet v0.15.8, Linux Ubuntu 26.04.1 LTS (Resolute Raccoon)
INTEL XEON PLATINUM 8573C 3.17GHz, 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 | Median | Min | Max | Ratio | Payload | Gen0 | Gen1 | Gen2 | Allocated | Alloc Ratio |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| FixedSizeTest | NinoDeserializeFixedClass | 7.9603 ns | 7.9894 ns | 7.7226 ns | 8.0931 ns | 1.00 | - | 0.0055 | - | - | 56 B | 1.00 |
| FixedSizeTest | MemoryPackDeserializeFixedClass | 18.0411 ns | 17.8965 ns | 17.6606 ns | 18.7490 ns | 2.27 | - | 0.0110 | - | - | 56 B | 1.00 |
| FixedSizeTest | NinoSerializeFixedClass | 8.9542 ns | 8.9104 ns | 8.7093 ns | 9.2722 ns | 1.00 | 41 B | 0.0069 | - | - | 72 B | 1.00 |
| FixedSizeTest | MemoryPackSerializeFixedClass | 17.2610 ns | 17.2022 ns | 16.8589 ns | 17.8277 ns | 1.93 | 41 B | 0.0094 | - | - | 72 B | 1.00 |
| FixedSizeTest | NinoDeserializeFixedClasses | 928.5733 ns | 927.5320 ns | 912.8620 ns | 947.1308 ns | 1.00 | - | 0.5636 | 0.0038 | - | 6424 B | 1.00 |
| FixedSizeTest | MemoryPackDeserializeFixedClasses | 1,040.6951 ns | 1,037.7072 ns | 1,015.2863 ns | 1,064.8156 ns | 1.12 | - | 0.5703 | 0.0038 | - | 6424 B | 1.00 |
| FixedSizeTest | NinoSerializeFixedClasses | 562.8806 ns | 561.6380 ns | 545.9303 ns | 578.5409 ns | 1.00 | 4,104 B | 0.3681 | - | - | 4128 B | 1.00 |
| FixedSizeTest | MemoryPackSerializeFixedClasses | 1,296.2371 ns | 1,300.2081 ns | 1,271.2403 ns | 1,311.4495 ns | 2.30 | 4,104 B | 0.5341 | - | - | 4128 B | 1.00 |
| FixedSizeTest | NinoDeserializeFixedStruct | 0.3058 ns | 0.2908 ns | 0.2485 ns | 0.3624 ns | 1.01 | - | - | - | - | - | NA |
| FixedSizeTest | MemoryPackDeserializeFixedStruct | 0.3436 ns | 0.3305 ns | 0.2728 ns | 0.4444 ns | 1.14 | - | - | - | - | - | NA |
| FixedSizeTest | NinoSerializeFixedStruct | 8.6735 ns | 8.6625 ns | 8.5078 ns | 8.8848 ns | 1.00 | 40 B | 0.0062 | - | - | 64 B | 1.00 |
| FixedSizeTest | MemoryPackSerializeFixedStruct | 7.0463 ns | 6.9933 ns | 6.8496 ns | 7.4190 ns | 0.81 | 40 B | 0.0061 | - | - | 64 B | 1.00 |
| ReferenceTest | NinoDeserializeGraph | 4,669.2391 ns | 4,667.2546 ns | 4,603.9427 ns | 4,741.5993 ns | 1.00 | - | 1.3885 | 0.0305 | - | 14104 B | 1.00 |
| ReferenceTest | MemoryPackDeserializeGraph | 14,815.7443 ns | 14,811.0464 ns | 14,538.6681 ns | 15,397.8316 ns | 3.17 | - | 2.7618 | 0.1221 | - | 14104 B | 1.00 |
| ReferenceTest | NinoSerializeGraph | 4,010.8475 ns | 4,017.5253 ns | 3,946.3285 ns | 4,071.4204 ns | 1.00 | 5,948 B | - | - | - | - | NA |
| ReferenceTest | MemoryPackSerializeGraph | 20,872.9824 ns | 20,910.9182 ns | 20,598.1994 ns | 21,208.1867 ns | 5.20 | 5,584 B | - | - | - | - | NA |
| PooledGraphTest | NinoLeavesNew | 2,847.3823 ns | 2,849.0897 ns | 2,778.6375 ns | 2,927.7768 ns | 1.00 | - | 1.2436 | 0.0267 | - | 13656 B | 1.00 |
| PooledGraphTest | NinoLeavesPooledElements | 2,065.7212 ns | 2,062.7890 ns | 2,041.3164 ns | 2,102.7987 ns | 0.73 | - | 0.0839 | - | - | 856 B | 0.06 |
| PooledGraphTest | NinoLeavesInPlace | 462.5170 ns | 462.0804 ns | 458.0175 ns | 466.9595 ns | 0.16 | - | - | - | - | - | 0.00 |
| PooledGraphTest | MemoryPackLeavesNew | 2,825.4024 ns | 2,824.9509 ns | 2,771.4915 ns | 2,883.7291 ns | 0.99 | - | 1.2627 | 0.0267 | - | 13656 B | 1.00 |
| PooledGraphTest | MemoryPackLeavesOverwrite | 3,521.3842 ns | 3,513.4459 ns | 3,478.0278 ns | 3,562.9564 ns | 1.24 | - | 1.2550 | 0.0076 | - | 12800 B | 0.94 |
| PooledGraphTest | NinoNodeNew | 481.0451 ns | 477.0926 ns | 463.9069 ns | 502.2382 ns | 1.00 | - | 0.2098 | - | - | 2192 B | 1.00 |
| PooledGraphTest | NinoNodePooled | 171.1200 ns | 171.1183 ns | 168.7478 ns | 173.4899 ns | 0.36 | - | - | - | - | - | 0.00 |
| PooledGraphTest | MemoryPackNodeNew | 490.5624 ns | 489.9887 ns | 477.4860 ns | 508.8863 ns | 1.02 | - | 0.2108 | - | - | 2192 B | 1.00 |
| PooledGraphTest | MemoryPackNodeOverwrite | 388.2578 ns | 387.0091 ns | 376.2807 ns | 401.1830 ns | 0.81 | - | 0.1254 | 0.0005 | 0.0005 | - | 0.00 |
| PooledGraphTest | NinoPlainNew | 2,233.4570 ns | 2,238.7785 ns | 2,205.7916 ns | 2,250.7403 ns | 1.00 | - | 1.1520 | 0.0153 | - | 12856 B | 1.00 |
| PooledGraphTest | MemoryPackPlainNew | 3,029.4173 ns | 3,028.9318 ns | 2,980.6007 ns | 3,081.5492 ns | 1.36 | - | 1.2283 | 0.0229 | - | 12856 B | 1.00 |
| PolymorphicTest | NinoDeserializePolymorphicClassArray | 229,911.4282 ns | 229,849.0833 ns | 224,049.1558 ns | 237,692.4004 ns | 1.00 | - | 30.0293 | 14.1602 | - | 745624 B | 1.00 |
| PolymorphicTest | MemoryPackDeserializePolymorphicClassArray | 304,143.3878 ns | 304,968.8494 ns | 294,739.6599 ns | 312,124.0662 ns | 1.32 | - | 32.7148 | 13.6719 | - | 745624 B | 1.00 |
| PolymorphicTest | MessagePackDeserializePolymorphicClassArray | 1,311,827.5042 ns | 1,301,329.1865 ns | 1,277,364.7236 ns | 1,356,738.0400 ns | 5.71 | - | 46.8750 | 21.4844 | - | 1162424 B | 1.56 |
| PolymorphicTest | NinoSerializePolymorphicClassArray | 54,259.3790 ns | 54,046.3712 ns | 52,923.7769 ns | 56,545.8755 ns | 1.00 | 397,304 B | - | - | - | - | NA |
| PolymorphicTest | MemoryPackSerializePolymorphicClassArray | 206,138.1278 ns | 205,682.1726 ns | 201,659.4500 ns | 209,404.0693 ns | 3.80 | 384,404 B | - | - | - | - | NA |
| PolymorphicTest | MessagePackSerializePolymorphicClassArray | 666,853.0456 ns | 665,245.3350 ns | 654,737.1445 ns | 677,919.3896 ns | 12.29 | 487,103 B | - | - | - | - | NA |
| PolymorphicTest | NinoDeserializePolymorphicClass | 15,989.5236 ns | 16,001.8381 ns | 15,653.5999 ns | 16,549.2442 ns | 1.00 | - | 7.3242 | 0.9766 | - | 79688 B | 1.00 |
| PolymorphicTest | MemoryPackDeserializePolymorphicClass | 22,522.4536 ns | 22,536.3169 ns | 22,209.2340 ns | 22,837.9660 ns | 1.41 | - | 7.1411 | 0.8850 | - | 79688 B | 1.00 |
| PolymorphicTest | MessagePackDeserializePolymorphicClass | 156,949.2387 ns | 157,267.4541 ns | 151,490.7922 ns | 160,607.3689 ns | 9.82 | - | 11.7188 | 1.2207 | 0.2441 | - | 0.00 |
| PolymorphicTest | NinoSerializePolymorphicClass | 5,569.7353 ns | 5,582.1420 ns | 5,484.2558 ns | 5,650.9783 ns | 1.00 | 53,789 B | - | - | - | - | NA |
| PolymorphicTest | MemoryPackSerializePolymorphicClass | 19,060.0369 ns | 19,103.7304 ns | 18,705.3859 ns | 19,538.1357 ns | 3.42 | 51,760 B | - | - | - | - | NA |
| PolymorphicTest | MessagePackSerializePolymorphicClass | 91,580.2509 ns | 91,173.4438 ns | 89,273.8198 ns | 94,235.8266 ns | 16.44 | 66,859 B | - | - | - | - | NA |
| PolymorphicTest | NinoDeserializePolymorphicFooArray | 14,724.9818 ns | 14,691.5693 ns | 14,574.8540 ns | 14,919.5461 ns | 1.00 | - | 6.9122 | 0.9766 | - | 76024 B | 1.00 |
| PolymorphicTest | MemoryPackDeserializePolymorphicFooArray | 21,061.9120 ns | 20,989.5862 ns | 20,754.3346 ns | 21,468.5655 ns | 1.43 | - | 6.9885 | 0.9460 | - | 76024 B | 1.00 |
| PolymorphicTest | MessagePackDeserializePolymorphicFooArray | 156,572.2292 ns | 156,957.8685 ns | 154,049.3805 ns | 158,452.8812 ns | 10.63 | - | 7.0801 | 0.9766 | - | 76024 B | 1.00 |
| PolymorphicTest | NinoSerializePolymorphicFooArray | 5,300.5762 ns | 5,297.7079 ns | 5,237.9107 ns | 5,380.6911 ns | 1.00 | 52,404 B | - | - | - | - | NA |
| PolymorphicTest | MemoryPackSerializePolymorphicFooArray | 18,867.5011 ns | 18,851.3992 ns | 18,587.6191 ns | 19,208.4680 ns | 3.56 | 50,404 B | - | - | - | - | NA |
| PolymorphicTest | MessagePackSerializePolymorphicFooArray | 91,155.9083 ns | 91,040.4235 ns | 90,106.6616 ns | 92,922.4644 ns | 17.20 | 65,203 B | - | - | - | - | NA |
| PooledTest | NinoDeserializeNew | 418.0389 ns | 418.8265 ns | 411.5895 ns | 423.4871 ns | 1.00 | - | 0.2227 | 0.0005 | - | 2536 B | 1.00 |
| PooledTest | NinoDeserializePooled | 198.7050 ns | 198.8570 ns | 196.5964 ns | 201.4912 ns | 0.48 | - | - | - | - | - | 0.00 |
| PooledTest | MemoryPackDeserializeNew | 520.9262 ns | 521.6845 ns | 511.5565 ns | 534.8488 ns | 1.25 | - | 0.2403 | - | - | 2536 B | 1.00 |
| PooledTest | MemoryPackDeserializeOverwrite | 439.9460 ns | 439.2349 ns | 429.0195 ns | 452.1600 ns | 1.05 | - | 0.2122 | 0.0005 | - | 1080 B | 0.43 |
| SimpleTest | NinoDeserializeSimpleClass | 387.2075 ns | 385.9861 ns | 381.7117 ns | 396.3624 ns | 1.00 | - | 0.2151 | 0.0005 | - | 2528 B | 1.00 |
| SimpleTest | MemoryPackDeserializeSimpleClass | 523.7597 ns | 521.7397 ns | 517.0685 ns | 534.2052 ns | 1.35 | - | 0.2403 | - | - | 2528 B | 1.00 |
| SimpleTest | MessagePackDeserializeSimpleClass | 1,469.3209 ns | 1,463.6979 ns | 1,424.4594 ns | 1,536.3834 ns | 3.80 | - | 0.4940 | 0.0038 | - | 2528 B | 1.00 |
| SimpleTest | NinoSerializeSimpleClass | 79.7686 ns | 79.4940 ns | 77.0502 ns | 83.9615 ns | 1.00 | 1,150 B | - | - | - | - | NA |
| SimpleTest | MemoryPackSerializeSimpleClass | 262.3328 ns | 259.9155 ns | 256.6254 ns | 270.9978 ns | 3.29 | 1,148 B | - | - | - | - | NA |
| SimpleTest | MessagePackSerializeSimpleClass | 671.3877 ns | 670.3674 ns | 659.2954 ns | 683.6789 ns | 8.42 | 1,112 B | - | - | - | - | NA |
| SimpleTest | NinoDeserializeSimpleClasses | 41,509.8315 ns | 41,562.7994 ns | 40,600.2062 ns | 42,526.0764 ns | 1.00 | - | 18.1885 | 5.6763 | - | 253624 B | 1.00 |
| SimpleTest | MemoryPackDeserializeSimpleClasses | 52,212.2917 ns | 52,124.3447 ns | 50,111.2345 ns | 54,051.8146 ns | 1.26 | - | 18.1274 | 5.6763 | - | 253624 B | 1.00 |
| SimpleTest | MessagePackDeserializeSimpleClasses | 148,895.5901 ns | 149,074.7585 ns | 145,629.3193 ns | 150,509.6360 ns | 3.59 | - | 18.3105 | 5.3711 | - | 253624 B | 1.00 |
| SimpleTest | NinoSerializeSimpleClasses | 9,129.9504 ns | 9,075.4228 ns | 8,898.6148 ns | 9,512.6317 ns | 1.00 | 115,004 B | - | - | - | - | NA |
| SimpleTest | MemoryPackSerializeSimpleClasses | 27,923.4676 ns | 27,833.4460 ns | 27,510.2140 ns | 28,577.7197 ns | 3.06 | 114,804 B | - | - | - | - | NA |
| SimpleTest | MessagePackSerializeSimpleClasses | 66,934.5802 ns | 66,922.7982 ns | 64,995.1449 ns | 68,082.3518 ns | 7.33 | 111,203 B | - | - | - | - | NA |
| SimpleTest | NinoDeserializeSimpleStruct | 0.0043 ns | 0.0000 ns | 0.0000 ns | 0.0195 ns | ? | - | - | - | - | - | ? |
| SimpleTest | MemoryPackDeserializeSimpleStruct | 0.3198 ns | 0.3230 ns | 0.2660 ns | 0.3770 ns | ? | - | - | - | - | - | ? |
| SimpleTest | MessagePackDeserializeSimpleStruct | 51.3546 ns | 51.1451 ns | 50.5029 ns | 52.4133 ns | ? | - | - | - | - | - | ? |
| SimpleTest | NinoSerializeSimpleStruct | 1.1129 ns | 1.1052 ns | 1.0759 ns | 1.1958 ns | 1.00 | 12 B | - | - | - | - | NA |
| SimpleTest | MemoryPackSerializeSimpleStruct | 2.4785 ns | 2.4807 ns | 2.4030 ns | 2.5546 ns | 2.23 | 12 B | - | - | - | - | NA |
| SimpleTest | MessagePackSerializeSimpleStruct | 54.6065 ns | 54.5511 ns | 53.5475 ns | 56.0964 ns | 49.10 | 16 B | - | - | - | - | NA |
| SimpleTest | NinoDeserializeSimpleStructs | 78.5848 ns | 78.5587 ns | 76.7210 ns | 80.3427 ns | 1.00 | - | 0.1214 | - | - | 1224 B | 1.00 |
| SimpleTest | MemoryPackDeserializeSimpleStructs | 88.9988 ns | 88.3321 ns | 87.4238 ns | 91.2708 ns | 1.13 | - | 0.1214 | - | - | 1224 B | 1.00 |
| SimpleTest | MessagePackDeserializeSimpleStructs | 2,582.5795 ns | 2,578.1190 ns | 2,468.9581 ns | 2,692.5738 ns | 32.87 | - | 0.1106 | - | - | 1224 B | 1.00 |
| SimpleTest | NinoSerializeSimpleStructs | 12.4968 ns | 12.4662 ns | 12.2554 ns | 12.8028 ns | 1.00 | 1,204 B | - | - | - | - | NA |
| SimpleTest | MemoryPackSerializeSimpleStructs | 13.1690 ns | 13.0561 ns | 12.8112 ns | 13.8962 ns | 1.05 | 1,204 B | - | - | - | - | NA |
| SimpleTest | MessagePackSerializeSimpleStructs | 2,445.7509 ns | 2,440.7327 ns | 2,367.5460 ns | 2,524.0544 ns | 195.75 | 1,603 B | - | - | - | - | NA |
| VersionTolerantTest | NinoDeserializeTolerantClass | 393.5918 ns | 394.5995 ns | 386.5329 ns | 399.9211 ns | 1.00 | - | 0.2289 | 0.0005 | - | 2528 B | 1.00 |
| VersionTolerantTest | MemoryPackDeserializeTolerantClass | 569.9317 ns | 571.5069 ns | 548.2326 ns | 593.4835 ns | 1.45 | - | 0.2441 | - | - | 2528 B | 1.00 |
| VersionTolerantTest | NinoSerializeTolerantClass | 76.7601 ns | 76.9557 ns | 75.0368 ns | 77.9081 ns | 1.00 | 1,154 B | - | - | - | - | NA |
| VersionTolerantTest | MemoryPackSerializeTolerantClass | 333.3084 ns | 332.5491 ns | 328.7759 ns | 340.7748 ns | 4.34 | 1,164 B | - | - | - | - | NA |
| VersionTolerantTest | NinoDeserializeTolerantClasses | 40,057.1337 ns | 40,163.9520 ns | 39,542.6307 ns | 40,445.1497 ns | 1.00 | - | 18.1885 | 5.6152 | - | 253624 B | 1.00 |
| VersionTolerantTest | MemoryPackDeserializeTolerantClasses | 56,371.0890 ns | 56,377.3380 ns | 55,352.3831 ns | 57,183.9251 ns | 1.41 | - | 17.9443 | 5.4321 | - | 253624 B | 1.00 |
| VersionTolerantTest | NinoSerializeTolerantClasses | 8,466.3495 ns | 8,427.3201 ns | 8,342.9010 ns | 8,651.7025 ns | 1.00 | 115,404 B | - | - | - | - | NA |
| VersionTolerantTest | MemoryPackSerializeTolerantClasses | 34,227.3815 ns | 34,200.3911 ns | 33,919.2686 ns | 34,633.9902 ns | 4.04 | 116,404 B | - | - | - | - | NA |
| SimpleTest | NinoDeserializeVectors | 92,973.9461 ns | 93,718.3854 ns | 85,849.0925 ns | 95,489.8906 ns | 1.00 | - | 14.6484 | 14.6484 | 14.6484 | 160030 B | 1.00 |
| SimpleTest | MemoryPackDeserializeVectors | 94,227.4950 ns | 92,546.2515 ns | 88,480.6789 ns | 101,366.6600 ns | 1.01 | - | 15.5029 | 15.5029 | 15.5029 | 160031 B | 1.00 |
| SimpleTest | MessagePackDeserializeVectors | 271,441.4140 ns | 271,694.8042 ns | 257,259.1453 ns | 286,670.1218 ns | 2.92 | - | 20.0195 | 20.0195 | 20.0195 | - | 0.00 |
| SimpleTest | NinoSerializeVectors | 3,499.3051 ns | 3,494.0753 ns | 3,436.3905 ns | 3,566.7647 ns | 1.00 | 160,004 B | - | - | - | - | NA |
| SimpleTest | MemoryPackSerializeVectors | 3,490.9203 ns | 3,483.4684 ns | 3,466.8321 ns | 3,539.8703 ns | 1.00 | 160,004 B | - | - | - | - | NA |
| SimpleTest | MessagePackSerializeVectors | 109,414.5315 ns | 109,306.2482 ns | 107,551.5930 ns | 112,759.1559 ns | 31.27 | 210,003 B | - | - | - | - | NA |
Benchmark generated automatically on 2026-10-17 12:01:35 UTC