Repository navigation
v4.0.0-rc.6
Pre-releaseInstall: dotnet add package Nino --version 4.0.0-rc.6 (Unity package: 4.0.0-preview.206)
Wire format
Only these write different bytes than v4.0.0-rc.5:
- The default
stringencoding writes text whose chars are all at most U+00FF (ASCII, Latin-1) in one byte a char, behind a negative length header; other text stays UTF-16 and[NinoUtf8]is unchanged. This release still reads the UTF-16 strings earlier v4 releases wrote, but earlier releases cannot read the one-byte strings it writes: upgrade the readers of your data before or together with its writers.
New
- Nino.AspNetCore: MVC input and output formatters (
AddNinoFormatters(),application/x-nino) and Minimal API support (NinoBody<T>parameters,NinoResults.Ok,ReadFromNinoAsync/WriteAsNinoAsync), reading and writing bodies straight from the request and response pipes.NinoSerializer.IsSupported(Type)tells whether Nino can serialize a type. [assembly: NinoTypeLayout]now describes each member by the bytes it is written as (seq(string),map(string,seq(raw(4))),nullable(raw(4)),type(MyType)...) instead of the formatter class, and keyed members carry their key (:key=0x…).- Nino.TypeScript, a build package that writes TypeScript classes, enums and codecs for the project's
[NinoType]s after each build (NinoTypeScriptOutput,NinoTypeScriptImportExtension,NinoTypeScriptNames), with thenino.tsruntime, so browsers and Node read and write exactly the bytes Nino writes in .NET.
Performance
- Payloads with Latin-1 strings are smaller, with the same serialize and deserialize times as before: the benchmark's Orders 30,848 → 26,126 bytes, Players 45,124 → 39,164 and Tree 40,676 → 31,258, now smaller than MemoryPack's (27,990, 43,364 and 32,623).
- TypeScript serializers are faster: 1,000 player records serialize in 1.15 ms instead of 2.07 ms and deserialize in 1.17 ms instead of 1.92 ms (Node), text-heavy records 6.8x and 11x faster, and arrays of numbers 2-5x faster.
- TypeScript deserializes text faster: lists of small records with short strings in 0.46 ms instead of 0.81 ms in Node (0.42 ms instead of 0.65 ms in Chromium), maps of short strings 1.5x faster in Node; in Chromium, arrays of numbers and structs serialize 1.3-1.5x faster.
- Lists and arrays of value tuples,
KeyValuePairs and other raw values with padding are written as whole, aligned vectors of their bytes: serializing aList<(int, long)>of 1,000 values takes 106 to 109 ns instead of 228 ns in rc.5 on an AVX-512 Xeon (MemoryPack: 136 to 141 ns), and AVX-512 CPUs without VBMI use the grouped path too. - Reading arrays, lists and read-only collections of 2 to 6 KB of unmanaged values allocates them without zeroing: a
ReadOnlyCollection<int>of 1,000 deserializes in 450 to 510 ns instead of 570 to 590 ns. - Deserializing 1,000
(int, long)into an existing list or array on an AVX-512 Xeon takes 105 to 140 ns instead of 255 ns in rc.5, on par with MemoryPack (111 to 130 ns), which copies its 16-byte values as they are; 1,000-char non-Latin-1 strings deserialize about 8% faster.
Fixes
- TypeScript: a
[NinoUtf8]string starting with U+FEFF no longer fails to deserialize. - Unity projects that reference a library with an internal
ModuleInitializerAttributepolyfill (such as ZLinq's netstandard build) compile again: the generated registry no longer names that attribute (error CS0122).
Every change between v4 releases: Changelog.
What's Changed since v4.0.0-rc.5
26 commits
✨ Features
- feat(aspnetcore): Nino.AspNetCore package for MVC and Minimal APIs (fdcc0e9) by @JasonXuDeveloper
- feat(generator): describe members by their bytes in NinoTypeLayout (f76fa0e) by @JasonXuDeveloper
- feat(core): write Latin-1 strings in one byte a char (9f86e78) by @JasonXuDeveloper
- feat(typescript): generate TypeScript for [NinoType]s after each build (be02a9e) by @JasonXuDeveloper
⚡ Performance
- perf(aspnetcore): read and write bodies without allocating (4a4f136) by @JasonXuDeveloper
- perf(core): write tuples with padding as full vectors of blocks, from an aligned destination (e344f4c) by @JasonXuDeveloper
- perf(typescript): read and write runs of fixed-size values at offsets, and text natively (edbeb0a) by @JasonXuDeveloper
- perf(core): align the destination of vector stores when reading blocks and converting text (790b6ea) by @JasonXuDeveloper
- perf(typescript): slice short text from one decode, and write results in place (1e4fe91) by @JasonXuDeveloper
- perf(core): write groups of blocks with word permutes, in their own method (4123ec4) by @JasonXuDeveloper
- perf(core): allocate arrays of 2 KB or more uninitialized, and inline raw serialization (07c74db) by @JasonXuDeveloper
- perf(core): read groups of blocks with two-source permutes into aligned vectors (570080b) by @JasonXuDeveloper
🐛 Fixes
- fix(typescript): type serialized bytes as Uint8Array<ArrayBuffer> (0e564ad) by @JasonXuDeveloper
- fix(core): narrow and widen strings of 8+ chars without SIMD (fb59816) by @JasonXuDeveloper
- fix(generator): use initializer attributes only where the compilation can access them (c3bab17) by @JasonXuDeveloper
📖 Documentation
- docs(readme): cover everything v4 has released through rc.5 (75bed8a) by @JasonXuDeveloper
- docs: README for the compact strings, Nino.AspNetCore and Nino.TypeScript (c9ee854) by @JasonXuDeveloper
- docs: cover the rc.6 packages and string format in the READMEs and design notes (fd2d02d) by @JasonXuDeveloper
- docs: name ASP.NET Core and TypeScript in the README feature list (221eaaf) by @JasonXuDeveloper
🧪 Tests
- test(generator): expect byte encodings in the cross-assembly layout test (a76c8ae) by @JasonXuDeveloper
- test(benchmarks): TypeScript against JSON in Node and Chromium (1f84bd9) by @JasonXuDeveloper
🔧 Build, CI and dependencies
- ci(benchmarks): attach the Arm64 report when the release notes are full (2dc7e53) by @JasonXuDeveloper
- ci(benchmarks): run the A/B benchmark on x64 runners too (6258f22) by @JasonXuDeveloper
- ci(benchmarks): measure each case in three processes, over five shards per architecture (2b50790) by @JasonXuDeveloper
Contributors
Thanks to everyone who contributed to this release: @JasonXuDeveloper
Full Changelog: v4.0.0-rc.5...v4.0.0-rc.6
📊 v3 3.3.13 vs v4 (same machine)
Nino v3 3.3.13 (NuGet) against v4.0.0-rc.6, back to back on the same runner
benchmarks/v3 (the Nino and MemoryPack cases of the same SimpleTest, built against Nino 3.3.13 from nuget.org) ran directly before the v4
SimpleTest run below, on the same runner, with the same BenchmarkDotNet settings
(--launchCount 3 --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) |
|---|---|---|---|---|---|
| SerializeSimpleClass | 185.92 ns | 101.90 ns | 0.55x | 395.72 ns | 442.09 ns |
| SerializeSimpleClasses | 25.35 μs | 11.75 μs | 0.46x | 39.57 μs | 39.87 μs |
| SerializeSimpleStruct | 3.62 ns | 4.54 ns | 1.25x | 5.14 ns | 5.13 ns |
| SerializeSimpleStructs | 22.49 ns | 21.93 ns | 0.98x | 22.53 ns | 21.95 ns |
| SerializeVectors | 3.31 μs | 3.31 μs | 1.00x | 3.44 μs | 3.31 μs |
| SerializeFixedClass | - | 10.29 ns | - | 24.92 ns | - |
| SerializeFixedClasses | - | 747.63 ns | - | 1.74 μs | - |
| SerializeFixedStruct | - | 9.36 ns | - | 9.19 ns | - |
| SerializeInventory | - | 90.72 ns | - | 93.18 ns | - |
| SerializeOrders | - | 9.71 μs | - | 15.50 μs | - |
| SerializePlayers | - | 10.62 μs | - | 26.04 μs | - |
| SerializeShapes | - | 1.84 μs | - | 22.94 μs | - |
| SerializeStringDictionary | - | 8.61 μs | - | 32.70 μs | - |
| SerializeTree | - | 15.90 μs | - | 20.56 μs | - |
| SerializeBigInteger | - | 13.56 ns | - | - | - |
| SerializeBitArray | - | 25.62 ns | - | - | - |
| SerializeBlockingCollection | - | 5.52 μs | - | 11.61 μs | - |
| SerializeCultureInfo | - | 5.59 ns | - | 27.58 ns | - |
| SerializeImmutableDictionary | - | 19.08 μs | - | 20.36 μs | - |
| SerializeImmutableHashSet | - | 15.26 μs | - | 22.32 μs | - |
| SerializeImmutableQueue | - | 1.98 μs | - | 10.34 μs | - |
| SerializeImmutableSortedDictionary | - | 8.61 μs | - | 9.66 μs | - |
| SerializeImmutableSortedSet | - | 7.96 μs | - | 13.80 μs | - |
| SerializeImmutableStack | - | 4.42 μs | - | 15.67 μs | - |
| SerializeLazy | - | 8.50 ns | - | 47.45 ns | - |
| SerializeLookup | - | 2.64 μs | - | 9.51 μs | - |
| SerializeMemory | - | 54.58 ns | - | 73.62 ns | - |
| SerializePolymorphicClassArray | - | 77.49 μs | - | 339.40 μs | - |
| SerializePolymorphicClass | - | 6.64 μs | - | 35.68 μs | - |
| SerializePolymorphicFooArray | - | 6.91 μs | - | 38.70 μs | - |
| SerializeReadOnlyCollection | - | 2.38 μs | - | 8.50 μs | - |
| SerializeReadOnlySequence | - | 62.52 ns | - | 75.70 ns | - |
| SerializeStringBuilder | - | 32.36 ns | - | 55.05 ns | - |
| SerializeTimeZoneInfo | - | 11.17 ns | - | 287.88 ns | - |
| SerializeUri | - | 9.85 ns | - | 30.97 ns | - |
| SerializeVersion | - | 4.67 ns | - | 23.26 ns | - |
| SerializeGraph | - | 5.63 μs | - | 29.66 μs | - |
| SerializeTolerantClass | - | 107.20 ns | - | 512.66 ns | - |
| SerializeTolerantClasses | - | 12.35 μs | - | 52.63 μs | - |
| SerializeConcurrentDictionary | - | 2.39 μs | - | 3.88 μs | - |
| SerializeHashSet | - | 1.06 μs | - | 8.45 μs | - |
| SerializeKeyValuePairs | - | 92.61 ns | - | 92.68 ns | - |
| SerializeLinkedList | - | 1.56 μs | - | 8.25 μs | - |
| SerializeQueue | - | 56.37 ns | - | 8.36 μs | - |
| SerializeSortedList | - | 1.88 μs | - | 3.38 μs | - |
| SerializeTupleList | - | 387.96 ns | - | 231.65 ns | - |
| DeserializeNew | - | 469.82 ns | - | 708.26 ns | - |
| DeserializePooled | - | 298.37 ns | - | - | - |
| DeserializeSimpleClass | 537.39 ns | 463.06 ns | 0.86x | 739.18 ns | 715.81 ns |
| DeserializeSimpleClasses | 57.37 μs | 48.24 μs | 0.84x | 75.08 μs | 70.32 μs |
| DeserializeSimpleStruct | 0.76 ns | 0.71 ns | 0.95x | 1.46 ns | 1.47 ns |
| DeserializeSimpleStructs | 86.06 ns | 85.43 ns | 0.99x | 100.62 ns | 99.63 ns |
| DeserializeVectors | 121.25 μs | 123.79 μs | 1.02x | 121.34 μs | 118.19 μs |
| DeserializeFixedClass | - | 10.37 ns | - | 22.72 ns | - |
| DeserializeFixedClasses | - | 1.11 μs | - | 1.34 μs | - |
| DeserializeFixedStruct | - | 0.39 ns | - | 1.04 ns | - |
| DeserializeInventory | - | 448.21 ns | - | 459.80 ns | - |
| DeserializeOrders | - | 25.94 μs | - | 32.91 μs | - |
| DeserializePlayers | - | 32.03 μs | - | 44.94 μs | - |
| DeserializeShapes | - | 10.97 μs | - | 16.14 μs | - |
| DeserializeStringDictionary | - | 40.54 μs | - | 63.42 μs | - |
| DeserializeTree | - | 70.33 μs | - | 73.80 μs | - |
| DeserializePolymorphicClassArray | - | 258.18 μs | - | 381.82 μs | - |
| DeserializePolymorphicClass | - | 17.85 μs | - | 30.25 μs | - |
| DeserializePolymorphicFooArray | - | 15.49 μs | - | 28.89 μs | - |
| DeserializeBigInteger | - | 40.11 ns | - | - | - |
| DeserializeBitArray | - | 52.94 ns | - | - | - |
| DeserializeBlockingCollection | - | 5.42 μs | - | 29.56 μs | - |
| DeserializeCultureInfo | - | 49.60 ns | - | 70.05 ns | - |
| DeserializeGraph | - | 6.11 μs | - | 20.33 μs | - |
| DeserializeImmutableDictionary | - | 111.73 μs | - | 113.00 μs | - |
| DeserializeImmutableHashSet | - | 96.52 μs | - | 104.22 μs | - |
| DeserializeImmutableQueue | - | 8.22 μs | - | 10.00 μs | - |
| DeserializeImmutableSortedDictionary | - | 57.96 μs | - | 105.36 μs | - |
| DeserializeImmutableSortedSet | - | 19.67 μs | - | 87.98 μs | - |
| DeserializeImmutableStack | - | 7.73 μs | - | 9.93 μs | - |
| DeserializeLazy | - | 21.07 ns | - | 40.98 ns | - |
| DeserializeLookup | - | 623.06 ns | - | 859.10 ns | - |
| DeserializeMemory | - | 261.78 ns | - | 314.76 ns | - |
| DeserializeReadOnlyCollection | - | 299.85 ns | - | 306.50 ns | - |
| DeserializeReadOnlySequence | - | 315.11 ns | - | 317.42 ns | - |
| DeserializeStringBuilder | - | 142.16 ns | - | 159.21 ns | - |
| DeserializeTimeZoneInfo | - | 14.62 ns | - | 354.48 ns | - |
| DeserializeTolerantClass | - | 505.78 ns | - | 814.26 ns | - |
| DeserializeTolerantClasses | - | 52.95 μs | - | 84.17 μs | - |
| DeserializeUri | - | 104.16 ns | - | 121.34 ns | - |
| DeserializeVersion | - | 7.21 ns | - | 18.08 ns | - |
| DeserializeConcurrentDictionary | - | 15.54 μs | - | 56.06 μs | - |
| DeserializeHashSet | - | 5.69 μs | - | 6.54 μs | - |
| DeserializeKeyValuePairs | - | 433.08 ns | - | 460.56 ns | - |
| LeavesNew | - | 3.17 μs | - | 3.86 μs | - |
| LeavesPooledElements | - | 3.47 μs | - | - | - |
| LeavesInPlace | - | 486.01 ns | - | - | - |
| DeserializeLinkedList | - | 14.36 μs | - | 14.31 μs | - |
| NodeNew | - | 581.33 ns | - | 686.57 ns | - |
| NodePooled | - | 205.50 ns | - | - | - |
| PlainNew | - | 2.92 μs | - | 4.10 μs | - |
| DeserializeQueue | - | 267.35 ns | - | 3.55 μs | - |
| DeserializeSortedList | - | 1.94 μs | - | 15.27 μs | - |
| DeserializeTupleList | - | 1.22 μs | - | 1.08 μ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.07x (same code in both runs; the spread is the noise floor of this comparison).
(The raw v3 reports are in the workflow artifacts.)
📊 Arm64 benchmark
The Arm64 report is attached to this release: arm64-benchmark.md (the release notes have no room for it).
📊 Performance Report
Click to expand benchmark results
BenchmarkDotNet v0.15.8, Linux Ubuntu 26.04.1 LTS (Resolute Raccoon)
AMD EPYC 7763 2.59GHz, 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-v3
ShortRun-.NET 10.0 : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v3
Job=ShortRun-.NET 10.0 Runtime=.NET 10.0 Server=True
IterationCount=15 LaunchCount=3 WarmupCount=5
| Type | Method | Mean | Median | Min | Max | Ratio | Payload | Gen0 | Gen1 | Gen2 | Allocated | Alloc Ratio |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PooledTest | NinoDeserializeNew | 469.8175 ns | 470.2694 ns | 461.1434 ns | 477.0362 ns | 1.00 | - | 0.2298 | - | - | 2536 B | 1.00 |
| PooledTest | NinoDeserializePooled | 298.3700 ns | 298.9452 ns | 296.0001 ns | 300.3451 ns | 0.64 | - | - | - | - | - | 0.00 |
| PooledTest | MemoryPackDeserializeNew | 708.2577 ns | 705.0784 ns | 700.0440 ns | 725.8960 ns | 1.51 | - | 0.2489 | - | - | 2536 B | 1.00 |
| PooledTest | MemoryPackDeserializeOverwrite | 606.4009 ns | 604.1528 ns | 593.6854 ns | 622.5798 ns | 1.29 | - | 0.1421 | - | - | 1080 B | 0.43 |
| SimpleTest | NinoDeserializeSimpleClass | 463.0612 ns | 462.9319 ns | 455.3934 ns | 473.0055 ns | 1.00 | - | 0.2213 | 0.0005 | - | 2528 B | 1.00 |
| SimpleTest | MemoryPackDeserializeSimpleClass | 739.1793 ns | 730.0775 ns | 706.0640 ns | 784.9341 ns | 1.60 | - | 0.2489 | - | - | 2528 B | 1.00 |
| SimpleTest | MessagePackDeserializeSimpleClass | 1,768.1144 ns | 1,766.5533 ns | 1,756.2619 ns | 1,791.5780 ns | 3.82 | - | 0.3319 | 0.0019 | - | 2528 B | 1.00 |
| SimpleTest | NinoSerializeSimpleClass | 101.8980 ns | 103.3352 ns | 96.9835 ns | 105.1314 ns | 1.00 | 1,104 B | - | - | - | - | NA |
| SimpleTest | MemoryPackSerializeSimpleClass | 395.7231 ns | 396.3732 ns | 392.4194 ns | 398.9031 ns | 3.89 | 1,148 B | - | - | - | - | NA |
| SimpleTest | MessagePackSerializeSimpleClass | 1,095.2240 ns | 1,096.0586 ns | 1,086.6706 ns | 1,101.9091 ns | 10.76 | 1,112 B | - | - | - | - | NA |
| SimpleTest | NinoDeserializeSimpleClasses | 48,237.0004 ns | 48,211.7486 ns | 47,395.1423 ns | 49,465.8317 ns | 1.00 | - | 18.0054 | 5.6152 | - | 253624 B | 1.00 |
| SimpleTest | MemoryPackDeserializeSimpleClasses | 75,075.1910 ns | 71,027.3480 ns | 69,528.7733 ns | 84,480.5175 ns | 1.56 | - | 17.7002 | 5.3711 | - | 253624 B | 1.00 |
| SimpleTest | MessagePackDeserializeSimpleClasses | 188,310.5242 ns | 188,131.3883 ns | 185,624.0829 ns | 190,921.1493 ns | 3.90 | - | 18.3105 | 5.6152 | - | 253624 B | 1.00 |
| SimpleTest | NinoSerializeSimpleClasses | 11,749.9698 ns | 11,660.7824 ns | 11,627.0304 ns | 12,001.4301 ns | 1.00 | 110,404 B | - | - | - | - | NA |
| SimpleTest | MemoryPackSerializeSimpleClasses | 39,569.4687 ns | 39,583.4896 ns | 39,081.6703 ns | 40,254.5514 ns | 3.37 | 114,804 B | - | - | - | - | NA |
| SimpleTest | MessagePackSerializeSimpleClasses | 110,757.5348 ns | 111,117.8350 ns | 109,060.3275 ns | 112,390.9166 ns | 9.43 | 111,203 B | - | - | - | - | NA |
| SimpleTest | NinoDeserializeSimpleStruct | 0.7146 ns | 0.7099 ns | 0.7040 ns | 0.7313 ns | 1.00 | - | - | - | - | - | NA |
| SimpleTest | MemoryPackDeserializeSimpleStruct | 1.4568 ns | 1.4560 ns | 1.4512 ns | 1.4727 ns | 2.04 | - | - | - | - | - | NA |
| SimpleTest | MessagePackDeserializeSimpleStruct | 78.2270 ns | 77.0478 ns | 76.7600 ns | 81.3347 ns | 109.49 | - | - | - | - | - | NA |
| SimpleTest | NinoSerializeSimpleStruct | 4.5386 ns | 4.5292 ns | 4.5177 ns | 4.5731 ns | 1.00 | 12 B | - | - | - | - | NA |
| SimpleTest | MemoryPackSerializeSimpleStruct | 5.1429 ns | 5.1249 ns | 5.1021 ns | 5.2029 ns | 1.13 | 12 B | - | - | - | - | NA |
| SimpleTest | MessagePackSerializeSimpleStruct | 58.1502 ns | 58.1432 ns | 57.9998 ns | 58.2919 ns | 12.81 | 16 B | - | - | - | - | NA |
| SimpleTest | NinoDeserializeSimpleStructs | 85.4317 ns | 84.7232 ns | 83.7467 ns | 88.3087 ns | 1.00 | - | 0.1214 | - | - | 1224 B | 1.00 |
| SimpleTest | MemoryPackDeserializeSimpleStructs | 100.6208 ns | 101.0293 ns | 97.6718 ns | 103.4006 ns | 1.18 | - | 0.1214 | - | - | 1224 B | 1.00 |
| SimpleTest | MessagePackDeserializeSimpleStructs | 3,434.2847 ns | 3,447.3678 ns | 3,378.4908 ns | 3,486.5311 ns | 40.21 | - | 0.1869 | 0.0038 | 0.0038 | - | 0.00 |
| SimpleTest | NinoSerializeSimpleStructs | 21.9326 ns | 21.6744 ns | 21.5737 ns | 22.6312 ns | 1.00 | 1,204 B | - | - | - | - | NA |
| SimpleTest | MemoryPackSerializeSimpleStructs | 22.5276 ns | 21.0981 ns | 20.7069 ns | 26.0197 ns | 1.03 | 1,204 B | - | - | - | - | NA |
| SimpleTest | MessagePackSerializeSimpleStructs | 3,583.5103 ns | 3,596.2883 ns | 3,546.6943 ns | 3,616.2782 ns | 163.44 | 1,603 B | - | - | - | - | NA |
| SimpleTest | NinoDeserializeVectors | 123,788.5216 ns | 124,893.6809 ns | 112,309.3610 ns | 132,366.1134 ns | 1.00 | - | 17.3340 | 17.3340 | 17.3340 | 160034 B | 1.00 |
| SimpleTest | MemoryPackDeserializeVectors | 121,339.2514 ns | 120,950.1748 ns | 111,623.4480 ns | 130,539.9344 ns | 0.98 | - | 10.9863 | 10.9863 | 10.9863 | 160022 B | 1.00 |
| SimpleTest | MessagePackDeserializeVectors | 383,253.8703 ns | 383,338.5181 ns | 364,385.8584 ns | 397,011.7935 ns | 3.10 | - | 17.0898 | 17.0898 | 17.0898 | 160034 B | 1.00 |
| SimpleTest | NinoSerializeVectors | 3,309.1704 ns | 3,306.0656 ns | 3,226.1202 ns | 3,395.1571 ns | 1.00 | 160,004 B | - | - | - | - | NA |
| SimpleTest | MemoryPackSerializeVectors | 3,439.9768 ns | 3,403.5052 ns | 3,373.7433 ns | 3,546.1160 ns | 1.04 | 160,004 B | - | - | - | - | NA |
| SimpleTest | MessagePackSerializeVectors | 165,442.4164 ns | 165,296.3085 ns | 164,702.1152 ns | 166,199.2166 ns | 50.01 | 210,003 B | - | - | - | - | NA |
| FixedSizeTest | NinoDeserializeFixedClass | 10.3691 ns | 10.2812 ns | 9.6831 ns | 11.1760 ns | 1.00 | - | 0.0054 | - | - | 56 B | 1.00 |
| FixedSizeTest | MemoryPackDeserializeFixedClass | 22.7237 ns | 22.6639 ns | 22.1005 ns | 23.6630 ns | 2.20 | - | 0.0074 | - | - | 56 B | 1.00 |
| FixedSizeTest | NinoSerializeFixedClass | 10.2855 ns | 10.2187 ns | 9.7657 ns | 10.9377 ns | 1.00 | 41 B | 0.0061 | - | - | 72 B | 1.00 |
| FixedSizeTest | MemoryPackSerializeFixedClass | 24.9244 ns | 25.0018 ns | 24.3452 ns | 25.4477 ns | 2.43 | 41 B | 0.0094 | - | - | 72 B | 1.00 |
| FixedSizeTest | NinoDeserializeFixedClasses | 1,114.4687 ns | 1,115.5939 ns | 1,095.0090 ns | 1,133.8697 ns | 1.00 | - | 0.5436 | 0.0038 | - | 6424 B | 1.00 |
| FixedSizeTest | MemoryPackDeserializeFixedClasses | 1,344.8903 ns | 1,342.4858 ns | 1,316.8260 ns | 1,410.5782 ns | 1.21 | - | 0.5569 | 0.0038 | - | 6424 B | 1.00 |
| FixedSizeTest | NinoSerializeFixedClasses | 747.6283 ns | 746.7052 ns | 739.4864 ns | 761.0473 ns | 1.00 | 4,104 B | 0.3395 | - | - | 4128 B | 1.00 |
| FixedSizeTest | MemoryPackSerializeFixedClasses | 1,738.8546 ns | 1,738.8161 ns | 1,725.4791 ns | 1,756.6554 ns | 2.33 | 4,104 B | 0.5341 | - | - | 4128 B | 1.00 |
| FixedSizeTest | NinoDeserializeFixedStruct | 0.3920 ns | 0.3918 ns | 0.3886 ns | 0.3962 ns | 1.00 | - | - | - | - | - | NA |
| FixedSizeTest | MemoryPackDeserializeFixedStruct | 1.0366 ns | 1.0361 ns | 1.0292 ns | 1.0479 ns | 2.64 | - | - | - | - | - | NA |
| FixedSizeTest | NinoSerializeFixedStruct | 9.3631 ns | 9.2925 ns | 9.1385 ns | 9.7243 ns | 1.00 | 40 B | 0.0058 | - | - | 64 B | 1.00 |
| FixedSizeTest | MemoryPackSerializeFixedStruct | 9.1862 ns | 9.3847 ns | 8.3267 ns | 9.8192 ns | 0.98 | 40 B | 0.0053 | - | - | 64 B | 1.00 |
| CommonTypesTest | NinoDeserializeInventory | 448.2116 ns | 445.0878 ns | 435.6028 ns | 472.3375 ns | 1.00 | - | 0.7768 | - | - | 8024 B | 1.00 |
| CommonTypesTest | MemoryPackDeserializeInventory | 459.8027 ns | 458.9412 ns | 450.4429 ns | 479.4988 ns | 1.03 | - | 0.7768 | - | - | 8024 B | 1.00 |
| CommonTypesTest | NinoSerializeInventory | 90.7153 ns | 90.5397 ns | 89.7920 ns | 91.9009 ns | 1.00 | 8,004 B | - | - | - | - | NA |
| CommonTypesTest | MemoryPackSerializeInventory | 93.1758 ns | 93.1980 ns | 92.7528 ns | 94.1199 ns | 1.03 | 8,004 B | - | - | - | - | NA |
| CommonTypesTest | NinoDeserializeOrders | 25,939.8912 ns | 25,897.7051 ns | 25,336.6452 ns | 26,830.0400 ns | 1.00 | - | 8.0872 | 1.3428 | - | 88552 B | 1.00 |
| CommonTypesTest | MemoryPackDeserializeOrders | 32,909.1194 ns | 32,919.3860 ns | 32,048.0565 ns | 33,705.4994 ns | 1.27 | - | 7.8735 | 1.2207 | - | 88552 B | 1.00 |
| CommonTypesTest | NinoSerializeOrders | 9,714.8432 ns | 9,685.2597 ns | 9,223.7018 ns | 10,235.4455 ns | 1.00 | 26,126 B | - | - | - | - | NA |
| CommonTypesTest | MemoryPackSerializeOrders | 15,504.1575 ns | 15,626.7187 ns | 15,146.5935 ns | 15,834.6228 ns | 1.60 | 27,990 B | - | - | - | - | NA |
| CommonTypesTest | NinoDeserializePlayers | 32,032.1651 ns | 31,992.1979 ns | 31,368.8997 ns | 32,971.3283 ns | 1.00 | - | 10.3149 | 2.0142 | - | 120056 B | 1.00 |
| CommonTypesTest | MemoryPackDeserializePlayers | 44,941.4545 ns | 44,620.9643 ns | 43,015.6672 ns | 48,319.2726 ns | 1.40 | - | 9.7656 | 2.0752 | - | 120056 B | 1.00 |
| CommonTypesTest | NinoSerializePlayers | 10,623.2301 ns | 10,619.4435 ns | 10,454.6248 ns | 10,734.8474 ns | 1.00 | 39,164 B | - | - | - | - | NA |
| CommonTypesTest | MemoryPackSerializePlayers | 26,037.2501 ns | 25,815.5643 ns | 25,744.0205 ns | 26,587.3760 ns | 2.45 | 43,364 B | - | - | - | - | NA |
| CommonTypesTest | NinoDeserializeShapes | 10,968.8094 ns | 10,345.7417 ns | 10,160.8388 ns | 12,572.3023 ns | 1.01 | - | 3.3875 | 0.1984 | - | 36056 B | 1.00 |
| CommonTypesTest | MemoryPackDeserializeShapes | 16,141.5323 ns | 16,119.8470 ns | 15,925.6230 ns | 16,892.8812 ns | 1.48 | - | 3.5706 | 0.1831 | - | 36056 B | 1.00 |
| CommonTypesTest | NinoSerializeShapes | 1,840.5628 ns | 1,840.4373 ns | 1,838.2443 ns | 1,844.5940 ns | 1.00 | 14,004 B | - | - | - | - | NA |
| CommonTypesTest | MemoryPackSerializeShapes | 22,942.1400 ns | 22,979.7725 ns | 22,764.0875 ns | 23,067.0362 ns | 12.46 | 12,004 B | - | - | - | - | NA |
| CommonTypesTest | NinoDeserializeStringDictionary | 40,539.5361 ns | 40,670.3343 ns | 39,493.3683 ns | 41,367.2305 ns | 1.00 | - | 9.5825 | 1.6479 | - | 110216 B | 1.00 |
| CommonTypesTest | MemoryPackDeserializeStringDictionary | 63,419.9994 ns | 63,385.6813 ns | 62,013.5510 ns | 64,728.9741 ns | 1.56 | - | 9.8877 | 1.7090 | - | 110216 B | 1.00 |
| CommonTypesTest | NinoSerializeStringDictionary | 8,612.0258 ns | 8,545.6105 ns | 8,529.4465 ns | 8,774.6179 ns | 1.00 | 22,734 B | - | - | - | - | NA |
| CommonTypesTest | MemoryPackSerializeStringDictionary | 32,696.2943 ns | 31,764.1770 ns | 31,444.9645 ns | 34,659.5125 ns | 3.80 | 30,734 B | - | - | - | - | NA |
| CommonTypesTest | NinoDeserializeTree | 70,329.1944 ns | 70,342.6284 ns | 69,434.0479 ns | 71,558.9055 ns | 1.00 | - | 13.5498 | 3.4180 | - | 171872 B | 1.00 |
| CommonTypesTest | MemoryPackDeserializeTree | 73,802.2828 ns | 72,914.5251 ns | 70,737.3717 ns | 78,157.6602 ns | 1.05 | - | 13.4277 | 3.4180 | - | 171872 B | 1.00 |
| CommonTypesTest | NinoSerializeTree | 15,897.9953 ns | 15,941.4264 ns | 15,772.5813 ns | 15,983.9853 ns | 1.00 | 31,258 B | - | - | - | - | NA |
| CommonTypesTest | MemoryPackSerializeTree | 20,559.3890 ns | 20,389.8384 ns | 20,203.3891 ns | 21,238.8002 ns | 1.29 | 32,623 B | - | - | - | - | NA |
| BclTypesTest | NinoSerializeBigInteger | 13.563 ns | 13.307 ns | 13.208 ns | 14.173 ns | 1.00 | 203 B | - | - | - | - | NA |
| BclTypesTest | NinoSerializeBitArray | 25.619 ns | 25.714 ns | 25.119 ns | 25.949 ns | 1.00 | 129 B | - | - | - | - | NA |
| BclTypesTest | NinoSerializeBlockingCollection | 5,515.432 ns | 5,516.685 ns | 5,440.714 ns | 5,554.630 ns | 1.00 | 4,004 B | 0.4807 | 0.0076 | 0.0076 | - | NA |
| BclTypesTest | MemoryPackSerializeBlockingCollection | 11,613.111 ns | 11,524.384 ns | 11,506.364 ns | 11,828.226 ns | 2.11 | 4,004 B | - | - | - | 72 B | NA |
| BclTypesTest | NinoSerializeCultureInfo | 5.590 ns | 5.579 ns | 5.563 ns | 5.638 ns | 1.00 | 9 B | - | - | - | - | NA |
| BclTypesTest | MemoryPackSerializeCultureInfo | 27.580 ns | 27.636 ns | 27.368 ns | 27.734 ns | 4.93 | 13 B | - | - | - | - | NA |
| BclTypesTest | NinoSerializeImmutableDictionary | 19,081.488 ns | 19,205.147 ns | 18,673.116 ns | 19,503.214 ns | 1.00 | 8,004 B | - | - | - | - | NA |
| BclTypesTest | MemoryPackSerializeImmutableDictionary | 20,362.970 ns | 20,555.722 ns | 19,686.765 ns | 20,909.650 ns | 1.07 | 8,004 B | - | - | - | - | NA |
| BclTypesTest | NinoSerializeImmutableHashSet | 15,260.953 ns | 15,096.229 ns | 14,890.120 ns | 16,088.353 ns | 1.00 | 4,004 B | - | - | - | - | NA |
| BclTypesTest | MemoryPackSerializeImmutableHashSet | 22,322.736 ns | 20,784.410 ns | 20,426.502 ns | 25,586.550 ns | 1.46 | 4,004 B | - | - | - | - | NA |
| BclTypesTest | NinoSerializeImmutableQueue | 1,977.409 ns | 1,976.783 ns | 1,973.820 ns | 1,984.436 ns | 1.00 | 4,004 B | - | - | - | - | NA |
| BclTypesTest | MemoryPackSerializeImmutableQueue | 10,335.270 ns | 11,125.506 ns | 8,584.034 ns | 11,251.374 ns | 5.23 | 4,004 B | - | - | - | - | NA |
| BclTypesTest | NinoSerializeImmutableSortedDictionary | 8,608.902 ns | 8,702.525 ns | 8,299.105 ns | 8,846.488 ns | 1.00 | 8,004 B | - | - | - | - | NA |
| BclTypesTest | MemoryPackSerializeImmutableSortedDictionary | 9,659.918 ns | 9,759.457 ns | 9,340.514 ns | 9,871.430 ns | 1.12 | 8,004 B | - | - | - | - | NA |
| BclTypesTest | NinoSerializeImmutableSortedSet | 7,957.039 ns | 7,760.381 ns | 7,733.157 ns | 8,387.925 ns | 1.00 | 4,004 B | - | - | - | - | NA |
| BclTypesTest | MemoryPackSerializeImmutableSortedSet | 13,804.640 ns | 13,686.044 ns | 13,593.390 ns | 14,124.911 ns | 1.74 | 4,004 B | - | - | - | - | NA |
| BclTypesTest | NinoSerializeImmutableStack | 4,421.347 ns | 4,408.771 ns | 4,240.196 ns | 4,606.102 ns | 1.00 | 4,004 B | 1.1063 | 0.0153 | - | 8464 B | 1.00 |
| BclTypesTest | MemoryPackSerializeImmutableStack | 15,667.568 ns | 15,674.855 ns | 15,450.727 ns | 15,815.442 ns | 3.55 | 4,004 B | 0.3967 | - | - | 4112 B | 0.49 |
| BclTypesTest | NinoSerializeLazy | 8.500 ns | 8.508 ns | 8.383 ns | 8.632 ns | 1.00 | 27 B | - | - | - | - | NA |
| BclTypesTest | MemoryPackSerializeLazy | 47.449 ns | 46.179 ns | 45.215 ns | 50.980 ns | 5.58 | 31 B | - | - | - | - | NA |
| BclTypesTest | NinoSerializeLookup | 2,637.557 ns | 2,616.863 ns | 2,590.965 ns | 2,715.701 ns | 1.00 | 4,084 B | 0.0305 | - | - | 320 B | 1.00 |
| BclTypesTest | MemoryPackSerializeLookup | 9,514.496 ns | 9,596.837 ns | 9,314.810 ns | 9,637.774 ns | 3.61 | 4,094 B | 0.0305 | - | - | 320 B | 1.00 |
| BclTypesTest | NinoSerializeMemory | 54.584 ns | 53.720 ns | 53.604 ns | 56.411 ns | 1.00 | 4,004 B | - | - | - | - | NA |
| BclTypesTest | MemoryPackSerializeMemory | 73.623 ns | 74.278 ns | 71.618 ns | 74.944 ns | 1.35 | 4,004 B | - | - | - | - | NA |
| PolymorphicTest | NinoDeserializePolymorphicClassArray | 258,178.850 ns | 256,855.715 ns | 246,639.762 ns | 277,298.155 ns | 1.00 | - | 32.2266 | 14.6484 | - | 745624 B | 1.00 |
| PolymorphicTest | MemoryPackDeserializePolymorphicClassArray | 381,821.560 ns | 381,861.794 ns | 366,961.209 ns | 398,714.819 ns | 1.48 | - | 32.7148 | 15.6250 | - | 745624 B | 1.00 |
| PolymorphicTest | MessagePackDeserializePolymorphicClassArray | 1,796,609.093 ns | 1,776,444.850 ns | 1,728,898.080 ns | 1,887,880.344 ns | 6.96 | - | 48.8281 | 23.4375 | - | 1162424 B | 1.56 |
| PolymorphicTest | NinoSerializePolymorphicClassArray | 77,490.679 ns | 77,504.461 ns | 76,816.487 ns | 78,026.111 ns | 1.00 | 397,304 B | - | - | - | - | NA |
| PolymorphicTest | MemoryPackSerializePolymorphicClassArray | 339,396.159 ns | 332,544.416 ns | 327,914.897 ns | 360,654.803 ns | 4.38 | 384,404 B | - | - | - | - | NA |
| PolymorphicTest | MessagePackSerializePolymorphicClassArray | 940,382.824 ns | 939,388.677 ns | 910,476.333 ns | 969,328.759 ns | 12.14 | 487,103 B | - | - | - | - | NA |
| PolymorphicTest | NinoDeserializePolymorphicClass | 17,848.969 ns | 17,825.420 ns | 17,031.778 ns | 19,249.964 ns | 1.00 | - | 7.0801 | 0.9460 | - | 79688 B | 1.00 |
| PolymorphicTest | MemoryPackDeserializePolymorphicClass | 30,246.672 ns | 30,164.646 ns | 29,008.133 ns | 31,630.234 ns | 1.70 | - | 7.4463 | 1.0071 | - | 79688 B | 1.00 |
| PolymorphicTest | MessagePackDeserializePolymorphicClass | 231,995.138 ns | 229,943.166 ns | 224,122.631 ns | 241,312.272 ns | 13.01 | - | 11.2305 | 2.1973 | 0.4883 | 83856 B | 1.05 |
| PolymorphicTest | NinoSerializePolymorphicClass | 6,636.485 ns | 6,568.095 ns | 6,524.301 ns | 6,861.057 ns | 1.00 | 53,789 B | - | - | - | - | NA |
| PolymorphicTest | MemoryPackSerializePolymorphicClass | 35,684.729 ns | 35,748.207 ns | 33,079.068 ns | 37,870.805 ns | 5.38 | 51,760 B | - | - | - | - | NA |
| PolymorphicTest | MessagePackSerializePolymorphicClass | 125,042.567 ns | 125,177.386 ns | 120,823.987 ns | 130,782.224 ns | 18.85 | 66,859 B | - | - | - | - | NA |
| PolymorphicTest | NinoDeserializePolymorphicFooArray | 15,491.591 ns | 15,475.037 ns | 14,886.313 ns | 16,225.903 ns | 1.00 | - | 6.5308 | 0.8850 | - | 76024 B | 1.00 |
| PolymorphicTest | MemoryPackDeserializePolymorphicFooArray | 28,893.241 ns | 28,806.744 ns | 27,726.319 ns | 30,914.410 ns | 1.87 | - | 7.1411 | 0.9155 | - | 76024 B | 1.00 |
| PolymorphicTest | MessagePackDeserializePolymorphicFooArray | 220,342.082 ns | 219,580.534 ns | 212,923.931 ns | 226,684.398 ns | 14.23 | - | 7.0801 | 0.7324 | - | 76024 B | 1.00 |
| PolymorphicTest | NinoSerializePolymorphicFooArray | 6,914.832 ns | 6,704.963 ns | 6,600.905 ns | 7,454.095 ns | 1.00 | 52,404 B | - | - | - | - | NA |
| PolymorphicTest | MemoryPackSerializePolymorphicFooArray | 38,699.839 ns | 38,481.602 ns | 35,254.702 ns | 43,327.974 ns | 5.61 | 50,404 B | - | - | - | - | NA |
| PolymorphicTest | MessagePackSerializePolymorphicFooArray | 120,757.924 ns | 120,027.350 ns | 117,750.766 ns | 125,483.883 ns | 17.50 | 65,203 B | - | - | - | - | NA |
| BclTypesTest | NinoSerializeReadOnlyCollection | 2,384.123 ns | 2,381.663 ns | 2,379.186 ns | 2,422.401 ns | 1.00 | 4,004 B | 0.0038 | - | - | 40 B | 1.00 |
| BclTypesTest | MemoryPackSerializeReadOnlyCollection | 8,502.385 ns | 8,498.249 ns | 8,484.815 ns | 8,566.398 ns | 3.57 | 4,004 B | - | - | - | 40 B | 1.00 |
| BclTypesTest | NinoSerializeReadOnlySequence | 62.521 ns | 64.040 ns | 59.339 ns | 64.528 ns | 1.00 | 4,004 B | - | - | - | - | NA |
| BclTypesTest | MemoryPackSerializeReadOnlySequence | 75.696 ns | 74.708 ns | 73.941 ns | 78.669 ns | 1.21 | 4,004 B | - | - | - | - | NA |
| BclTypesTest | NinoSerializeStringBuilder | 32.359 ns | 31.521 ns | 31.302 ns | 34.274 ns | 1.00 | 2,004 B | - | - | - | - | NA |
| BclTypesTest | MemoryPackSerializeStringBuilder | 55.045 ns | 53.365 ns | 51.301 ns | 60.621 ns | 1.70 | 2,004 B | - | - | - | - | NA |
| BclTypesTest | NinoSerializeTimeZoneInfo | 11.167 ns | 11.106 ns | 11.063 ns | 11.357 ns | 1.00 | 11 B | - | - | - | - | NA |
| BclTypesTest | MemoryPackSerializeTimeZoneInfo | 287.882 ns | 283.324 ns | 276.436 ns | 306.533 ns | 25.78 | 102 B | 0.0224 | 0.0010 | 0.0010 | 216 B | NA |
| BclTypesTest | NinoSerializeUri | 9.853 ns | 9.605 ns | 9.589 ns | 10.394 ns | 1.00 | 56 B | - | - | - | - | NA |
| BclTypesTest | MemoryPackSerializeUri | 30.966 ns | 30.539 ns | 30.391 ns | 31.862 ns | 3.15 | 60 B | - | - | - | - | NA |
| BclTypesTest | NinoSerializeVersion | 4.668 ns | 4.693 ns | 4.605 ns | 4.709 ns | 1.00 | 16 B | - | - | - | - | NA |
| BclTypesTest | MemoryPackSerializeVersion | 23.260 ns | 23.550 ns | 22.479 ns | 23.849 ns | 4.98 | 17 B | - | - | - | - | NA |
| BclTypesTest | NinoDeserializeBigInteger | 40.114 ns | 40.068 ns | 38.519 ns | 42.212 ns | 1.00 | - | 0.0198 | - | - | 256 B | 1.00 |
| BclTypesTest | NinoDeserializeBitArray | 52.943 ns | 53.703 ns | 47.540 ns | 57.307 ns | 1.00 | - | 0.0256 | - | - | 336 B | 1.00 |
| BclTypesTest | NinoDeserializeBlockingCollection | 5,417.273 ns | 5,410.841 ns | 5,231.739 ns | 5,683.725 ns | 1.00 | - | 1.2436 | 0.0076 | - | 12792 B | 1.00 |
| BclTypesTest | MemoryPackDeserializeBlockingCollection | 29,559.038 ns | 29,570.599 ns | 29,019.025 ns | 30,241.216 ns | 5.46 | - | 1.8921 | 0.0916 | 0.0305 | - | 0.00 |
| BclTypesTest | NinoDeserializeCultureInfo | 49.605 ns | 49.634 ns | 48.247 ns | 51.236 ns | 1.00 | - | 0.0125 | - | - | 64 B | 1.00 |
| BclTypesTest | MemoryPackDeserializeCultureInfo | 70.048 ns | 67.805 ns | 64.883 ns | 78.405 ns | 1.41 | - | 0.0068 | 0.0001 | 0.0001 | - | 0.00 |
| ReferenceTest | NinoDeserializeGraph | 6,114.270 ns | 6,019.370 ns | 5,864.895 ns | 6,480.474 ns | 1.00 | - | 1.3962 | 0.0229 | - | 14104 B | 1.00 |
| ReferenceTest | MemoryPackDeserializeGraph | 20,325.330 ns | 20,293.701 ns | 19,769.065 ns | 20,952.211 ns | 3.33 | - | 1.6479 | 0.0610 | 0.0305 | - | 0.00 |
| ReferenceTest | NinoSerializeGraph | 5,631.047 ns | 5,640.438 ns | 5,534.742 ns | 5,738.755 ns | 1.00 | 5,878 B | - | - | - | - | NA |
| ReferenceTest | MemoryPackSerializeGraph | 29,659.917 ns | 29,530.669 ns | 29,290.318 ns | 30,223.079 ns | 5.27 | 5,584 B | - | - | - | - | NA |
| BclTypesTest | NinoDeserializeImmutableDictionary | 111,734.592 ns | 111,505.984 ns | 106,896.921 ns | 116,499.646 ns | 1.00 | - | 6.5918 | 0.6104 | 0.2441 | - | NA |
| BclTypesTest | MemoryPackDeserializeImmutableDictionary | 112,997.599 ns | 112,935.253 ns | 112,120.806 ns | 114,936.697 ns | 1.01 | - | 6.1035 | 0.8545 | 0.1221 | - | NA |
| BclTypesTest | NinoDeserializeImmutableHashSet | 96,524.637 ns | 96,414.772 ns | 95,302.507 ns | 97,964.933 ns | 1.00 | - | 6.1035 | 0.7324 | 0.2441 | - | NA |
| BclTypesTest | MemoryPackDeserializeImmutableHashSet | 104,223.475 ns | 103,635.552 ns | 101,251.025 ns | 107,780.615 ns | 1.08 | - | 5.7373 | 0.8545 | 0.2441 | 56105 B | NA |
| BclTypesTest | NinoDeserializeImmutableQueue | 8,222.806 ns | 8,185.333 ns | 7,603.070 ns | 8,940.233 ns | 1.00 | - | 3.4485 | 0.0916 | - | 36064 B | 1.00 |
| BclTypesTest | MemoryPackDeserializeImmutableQueue | 9,996.868 ns | 9,889.871 ns | 9,380.269 ns | 10,627.818 ns | 1.22 | - | 3.0212 | 0.0610 | - | 32112 B | 0.89 |
| BclTypesTest | NinoDeserializeImmutableSortedDictionary | 57,963.712 ns | 57,941.210 ns | 54,632.869 ns | 62,066.914 ns | 1.00 | - | 15.0757 | 1.8311 | - | 161056 B | 1.00 |
| BclTypesTest | MemoryPackDeserializeImmutableSortedDictionary | 105,361.468 ns | 106,118.940 ns | 96,922.419 ns | 113,087.431 ns | 1.82 | - | 4.6387 | 0.3662 | - | 48112 B | 0.30 |
| BclTypesTest | NinoDeserializeImmutableSortedSet | 19,671.742 ns | 19,671.018 ns | 18,730.490 ns | 20,654.256 ns | 1.00 | - | 5.3711 | 0.2441 | - | 56112 B | 1.00 |
| BclTypesTest | MemoryPackDeserializeImmutableSortedSet | 87,979.004 ns | 87,411.158 ns | 84,572.032 ns | 91,123.337 ns | 4.48 | - | 7.3242 | 0.9766 | 0.1221 | - | 0.00 |
| BclTypesTest | NinoDeserializeImmutableStack | 7,727.599 ns | 7,698.398 ns | 7,460.182 ns | 8,086.071 ns | 1.00 | - | 3.4332 | 0.0916 | - | 36024 B | 1.00 |
| BclTypesTest | MemoryPackDeserializeImmutableStack | 9,930.772 ns | 9,900.646 ns | 9,398.490 ns | 10,517.315 ns | 1.29 | - | 2.9755 | 0.0610 | - | 32040 B | 0.89 |
| BclTypesTest | NinoDeserializeLazy | 21.068 ns | 21.002 ns | 19.270 ns | 23.192 ns | 1.00 | - | 0.0101 | - | - | 112 B | 1.00 |
| BclTypesTest | MemoryPackDeserializeLazy | 40.978 ns | 40.921 ns | 39.696 ns | 43.194 ns | 1.95 | - | 0.0111 | - | - | 112 B | 1.00 |
| BclTypesTest | NinoDeserializeLookup | 623.063 ns | 616.437 ns | 590.424 ns | 686.913 ns | 1.00 | - | 0.5093 | 0.0029 | - | 5152 B | 1.00 |
| BclTypesTest | MemoryPackDeserializeLookup | 859.101 ns | 846.478 ns | 820.162 ns | 918.340 ns | 1.38 | - | 0.4663 | 0.0029 | - | 5576 B | 1.08 |
| BclTypesTest | NinoDeserializeMemory | 261.780 ns | 261.067 ns | 255.228 ns | 267.598 ns | 1.00 | - | 0.4058 | - | - | 4056 B | 1.00 |
| BclTypesTest | MemoryPackDeserializeMemory | 314.763 ns | 313.463 ns | 305.556 ns | 327.772 ns | 1.20 | - | 0.3972 | 0.0024 | - | 4056 B | 1.00 |
| BclTypesTest | NinoDeserializeReadOnlyCollection | 299.854 ns | 299.643 ns | 291.467 ns | 308.962 ns | 1.00 | - | 0.3967 | 0.0019 | - | 4048 B | 1.00 |
| BclTypesTest | MemoryPackDeserializeReadOnlyCollection | 306.500 ns | 305.859 ns | 298.667 ns | 313.618 ns | 1.02 | - | 0.3967 | 0.0024 | - | 4048 B | 1.00 |
| BclTypesTest | NinoDeserializeReadOnlySequence | 315.113 ns | 315.008 ns | 310.345 ns | 323.931 ns | 1.00 | - | 0.3972 | - | - | 4064 B | 1.00 |
| BclTypesTest | MemoryPackDeserializeReadOnlySequence | 317.419 ns | 317.776 ns | 305.523 ns | 333.488 ns | 1.01 | - | 0.3972 | - | - | 4064 B | 1.00 |
| BclTypesTest | NinoDeserializeStringBuilder | 142.165 ns | 142.824 ns | 136.218 ns | 146.492 ns | 1.00 | - | 0.2062 | 0.0005 | - | 2072 B | 1.00 |
| BclTypesTest | MemoryPackDeserializeStringBuilder | 159.211 ns | 158.103 ns | 153.225 ns | 166.988 ns | 1.12 | - | 0.2060 | 0.0005 | - | 2072 B | 1.00 |
| BclTypesTest | NinoDeserializeTimeZoneInfo | 14.615 ns | 14.559 ns | 14.040 ns | 15.582 ns | 1.00 | - | 0.0042 | - | - | 32 B | 1.00 |
| BclTypesTest | MemoryPackDeserializeTimeZoneInfo | 354.476 ns | 332.383 ns | 322.380 ns | 403.409 ns | 24.27 | - | 0.0892 | - | - | 680 B | 21.25 |
| VersionTolerantTest | NinoDeserializeTolerantClass | 505.780 ns | 508.006 ns | 479.608 ns | 552.328 ns | 1.00 | - | 0.2289 | - | - | 2528 B | 1.00 |
| VersionTolerantTest | MemoryPackDeserializeTolerantClass | 814.258 ns | 807.291 ns | 773.248 ns | 870.883 ns | 1.61 | - | 0.2470 | - | - | 2528 B | 1.00 |
| VersionTolerantTest | NinoSerializeTolerantClass | 107.199 ns | 107.325 ns | 106.311 ns | 107.912 ns | 1.00 | 1,108 B | - | - | - | - | NA |
| VersionTolerantTest | MemoryPackSerializeTolerantClass | 512.661 ns | 508.397 ns | 504.257 ns | 526.816 ns | 4.78 | 1,164 B | - | - | - | - | NA |
| VersionTolerantTest | NinoDeserializeTolerantClasses | 52,947.890 ns | 52,793.590 ns | 49,396.534 ns | 59,091.720 ns | 1.00 | - | 17.8223 | 5.6763 | - | 253624 B | 1.00 |
| VersionTolerantTest | MemoryPackDeserializeTolerantClasses | 84,174.646 ns | 83,936.989 ns | 79,833.336 ns | 89,762.256 ns | 1.59 | - | 17.8223 | 5.3711 | - | 253624 B | 1.00 |
| VersionTolerantTest | NinoSerializeTolerantClasses | 12,350.821 ns | 12,383.778 ns | 12,036.700 ns | 12,639.153 ns | 1.00 | 110,804 B | - | - | - | - | NA |
| VersionTolerantTest | MemoryPackSerializeTolerantClasses | 52,633.741 ns | 52,464.395 ns | 51,493.655 ns | 53,887.080 ns | 4.26 | 116,404 B | - | - | - | - | NA |
| BclTypesTest | NinoDeserializeUri | 104.155 ns | 104.652 ns | 101.574 ns | 107.102 ns | 1.00 | - | 0.0242 | - | - | 184 B | 1.00 |
| BclTypesTest | MemoryPackDeserializeUri | 121.344 ns | 119.829 ns | 117.679 ns | 128.772 ns | 1.17 | - | 0.0267 | 0.0002 | 0.0002 | - | 0.00 |
| BclTypesTest | NinoDeserializeVersion | 7.207 ns | 7.200 ns | 7.027 ns | 7.438 ns | 1.00 | - | 0.0032 | - | - | 32 B | 1.00 |
| BclTypesTest | MemoryPackDeserializeVersion | 18.079 ns | 18.053 ns | 17.875 ns | 18.532 ns | 2.51 | - | 0.0063 | - | - | 32 B | 1.00 |
| CollectionsTest | NinoDeserializeConcurrentDictionary | 15,535.08 ns | 15,519.54 ns | 15,104.10 ns | 16,032.12 ns | 1.00 | - | 4.6082 | 0.3967 | - | 49184 B | 1.00 |
| CollectionsTest | MemoryPackDeserializeConcurrentDictionary | 56,058.07 ns | 56,259.52 ns | 54,948.89 ns | 57,213.07 ns | 3.61 | - | 12.2681 | 2.1973 | - | 141032 B | 2.87 |
| CollectionsTest | NinoSerializeConcurrentDictionary | 2,386.95 ns | 2,410.91 ns | 2,291.69 ns | 2,477.88 ns | 1.00 | 8,004 B | - | - | - | - | NA |
| CollectionsTest | MemoryPackSerializeConcurrentDictionary | 3,878.70 ns | 3,876.76 ns | 3,858.47 ns | 3,907.00 ns | 1.63 | 8,004 B | - | - | - | - | NA |
| CollectionsTest | NinoDeserializeHashSet | 5,694.68 ns | 5,620.28 ns | 5,545.17 ns | 6,001.85 ns | 1.00 | - | 1.7700 | 0.0458 | - | 17768 B | 1.00 |
| CollectionsTest | MemoryPackDeserializeHashSet | 6,539.04 ns | 6,521.90 ns | 6,457.35 ns | 6,693.99 ns | 1.15 | - | 1.7700 | 0.0458 | - | 17768 B | 1.00 |
| CollectionsTest | NinoSerializeHashSet | 1,055.63 ns | 1,054.28 ns | 1,050.84 ns | 1,061.25 ns | 1.00 | 4,004 B | - | - | - | - | NA |
| CollectionsTest | MemoryPackSerializeHashSet | 8,453.23 ns | 8,453.11 ns | 8,434.58 ns | 8,475.26 ns | 8.01 | 4,004 B | - | - | - | - | NA |
| CollectionsTest | NinoDeserializeKeyValuePairs | 433.08 ns | 432.68 ns | 424.73 ns | 442.24 ns | 1.00 | - | 0.7768 | - | - | 8024 B | 1.00 |
| CollectionsTest | MemoryPackDeserializeKeyValuePairs | 460.56 ns | 461.17 ns | 441.99 ns | 477.21 ns | 1.06 | - | 0.7768 | - | - | 8024 B | 1.00 |
| CollectionsTest | NinoSerializeKeyValuePairs | 92.61 ns | 92.45 ns | 91.25 ns | 94.44 ns | 1.00 | 8,004 B | - | - | - | - | NA |
| CollectionsTest | MemoryPackSerializeKeyValuePairs | 92.68 ns | 92.53 ns | 92.36 ns | 93.22 ns | 1.00 | 8,004 B | - | - | - | - | NA |
| PooledGraphTest | NinoLeavesNew | 3,171.36 ns | 3,129.96 ns | 3,019.98 ns | 3,372.74 ns | 1.00 | - | 1.1711 | 0.0229 | - | 13656 B | 1.00 |
| PooledGraphTest | NinoLeavesPooledElements | 3,466.67 ns | 3,153.28 ns | 3,084.80 ns | 4,139.59 ns | 1.09 | - | 0.0839 | - | - | 856 B | 0.06 |
| PooledGraphTest | NinoLeavesInPlace | 486.01 ns | 485.43 ns | 482.27 ns | 491.27 ns | 0.15 | - | - | - | - | - | 0.00 |
| PooledGraphTest | MemoryPackLeavesNew | 3,860.60 ns | 3,725.81 ns | 3,667.95 ns | 4,213.45 ns | 1.22 | - | 1.2360 | 0.0229 | - | 13656 B | 1.00 |
| PooledGraphTest | MemoryPackLeavesOverwrite | 5,589.72 ns | 5,611.45 ns | 5,454.19 ns | 5,686.08 ns | 1.77 | - | 1.2589 | 0.0076 | - | 12800 B | 0.94 |
| CollectionsTest | NinoDeserializeLinkedList | 14,363.30 ns | 14,496.52 ns | 13,432.76 ns | 15,108.32 ns | 1.00 | - | 4.6082 | 0.3967 | - | 48040 B | 1.00 |
| CollectionsTest | MemoryPackDeserializeLinkedList | 14,311.74 ns | 14,449.43 ns | 13,800.11 ns | 14,671.38 ns | 1.00 | - | 4.6387 | 0.3815 | - | 48040 B | 1.00 |
| CollectionsTest | NinoSerializeLinkedList | 1,559.32 ns | 1,561.85 ns | 1,544.73 ns | 1,568.72 ns | 1.00 | 4,004 B | - | - | - | - | NA |
| CollectionsTest | MemoryPackSerializeLinkedList | 8,250.88 ns | 7,842.80 ns | 7,830.66 ns | 9,147.36 ns | 5.29 | 4,004 B | - | - | - | - | NA |
| PooledGraphTest | NinoNodeNew | 581.33 ns | 577.53 ns | 560.78 ns | 612.83 ns | 1.00 | - | 0.1974 | - | - | 2192 B | 1.00 |
| PooledGraphTest | NinoNodePooled | 205.50 ns | 204.56 ns | 203.17 ns | 208.31 ns | 0.35 | - | - | - | - | - | 0.00 |
| PooledGraphTest | MemoryPackNodeNew | 686.57 ns | 676.80 ns | 645.11 ns | 733.75 ns | 1.18 | - | 0.2146 | - | - | 2192 B | 1.00 |
| PooledGraphTest | MemoryPackNodeOverwrite | 597.39 ns | 597.58 ns | 588.97 ns | 611.18 ns | 1.03 | - | 0.1345 | - | - | 1024 B | 0.47 |
| PooledGraphTest | NinoPlainNew | 2,918.45 ns | 2,905.84 ns | 2,759.38 ns | 3,140.69 ns | 1.00 | - | 1.0452 | 0.0191 | - | 12856 B | 1.00 |
| PooledGraphTest | MemoryPackPlainNew | 4,101.40 ns | 4,086.76 ns | 3,917.59 ns | 4,298.28 ns | 1.41 | - | 1.2131 | 0.0153 | - | 12856 B | 1.00 |
| CollectionsTest | NinoDeserializeQueue | 267.35 ns | 266.53 ns | 263.45 ns | 278.61 ns | 1.00 | - | 0.4058 | 0.0019 | - | 4064 B | 1.00 |
| CollectionsTest | MemoryPackDeserializeQueue | 3,549.70 ns | 3,546.85 ns | 3,532.52 ns | 3,574.95 ns | 13.28 | - | 0.8011 | 0.0076 | - | 4064 B | 1.00 |
| CollectionsTest | NinoSerializeQueue | 56.37 ns | 56.24 ns | 55.17 ns | 57.44 ns | 1.00 | 4,004 B | - | - | - | - | NA |
| CollectionsTest | MemoryPackSerializeQueue | 8,361.87 ns | 8,443.15 ns | 8,124.37 ns | 8,517.45 ns | 148.36 | 4,004 B | - | - | - | - | NA |
| CollectionsTest | NinoDeserializeSortedList | 1,938.81 ns | 1,937.78 ns | 1,920.69 ns | 1,959.36 ns | 1.00 | - | 0.7706 | 0.0076 | - | 8112 B | 1.00 |
| CollectionsTest | MemoryPackDeserializeSortedList | 15,271.20 ns | 15,262.37 ns | 15,166.07 ns | 15,432.60 ns | 7.88 | - | 0.9460 | 0.0305 | 0.0305 | - | 0.00 |
| CollectionsTest | NinoSerializeSortedList | 1,879.94 ns | 1,878.93 ns | 1,876.76 ns | 1,894.32 ns | 1.00 | 8,004 B | - | - | - | - | NA |
| CollectionsTest | MemoryPackSerializeSortedList | 3,381.82 ns | 3,386.78 ns | 3,350.81 ns | 3,405.95 ns | 1.80 | 8,004 B | - | - | - | - | NA |
| CollectionsTest | NinoDeserializeTupleList | 1,217.23 ns | 1,215.92 ns | 1,205.22 ns | 1,248.82 ns | 1.00 | - | 1.6384 | - | - | 16056 B | 1.00 |
| CollectionsTest | MemoryPackDeserializeTupleList | 1,075.87 ns | 1,078.91 ns | 1,052.93 ns | 1,096.00 ns | 0.88 | - | 1.6422 | 0.0458 | - | 16056 B | 1.00 |
| CollectionsTest | NinoSerializeTupleList | 387.96 ns | 381.97 ns | 379.46 ns | 402.34 ns | 1.00 | 12,004 B | - | - | - | - | NA |
| CollectionsTest | MemoryPackSerializeTupleList | 231.65 ns | 229.66 ns | 228.91 ns | 236.46 ns | 0.60 | 16,004 B | - | - | - | - | NA |
The classes ran in parallel, each on its own runner (a class's Nino and MemoryPack cases on one):
- PooledTest, SimpleTest: AMD EPYC 7763 2.59GHz, 1 CPU, 4 logical and 2 physical cores
- CommonTypesTest, FixedSizeTest: AMD EPYC 7763 3.17GHz, 1 CPU, 4 logical and 2 physical cores
- BclTypesTest, PolymorphicTest: AMD EPYC 7763 2.65GHz, 1 CPU, 4 logical and 2 physical cores
- BclTypesTest, ReferenceTest, VersionTolerantTest: AMD EPYC 7763 2.63GHz, 1 CPU, 4 logical and 2 physical cores
- CollectionsTest, PooledGraphTest: AMD EPYC 7763 2.67GHz, 1 CPU, 4 logical and 2 physical cores
Benchmark generated automatically on 2026-10-19 03:31:13 UTC