Skip to content

Releases: JasonXuDeveloper/Nino

v3.2.3

25 Feb 06:25
Compare
Choose a tag to compare
  • [feat] support 'NinoFormerName' for generic types

Performance Report

expand

BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat)
AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores
.NET SDK 9.0.200
  [Host]     : .NET 8.0.13 (8.0.1325.6609), X64 RyuJIT AVX2
  Job-DJVUEN : .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2

Runtime=.NET 9.0  IterationCount=20  WarmupCount=1  

Method Mean Error StdDev Ratio RatioSD Payload
MessagePackDeserializeSimpleClass 1,993.7790 ns 22.9000 ns 26.3717 ns 4.76 0.08 -
MemoryPackDeserializeSimpleClass 588.8172 ns 4.7435 ns 5.0755 ns 1.40 0.02 -
NinoDeserializeSimpleClass 419.3163 ns 3.7240 ns 4.1392 ns 1.00 0.01 -
MessagePackSerializeSimpleClass 1,069.1856 ns 7.3085 ns 8.4164 ns 4.58 0.04 700B
MemoryPackSerializeSimpleClass 505.8187 ns 3.2135 ns 3.7007 ns 2.17 0.02 755B
NinoSerializeSimpleClass 233.2655 ns 0.9048 ns 1.0419 ns 1.00 0.01 764B
MessagePackDeserializeSimpleClasses 199,360.3167 ns 2,505.4145 ns 2,885.2390 ns 4.43 0.09 -
MemoryPackDeserializeSimpleClasses 58,677.7572 ns 533.1919 ns 614.0246 ns 1.30 0.02 -
NinoDeserializeSimpleClasses 44,980.8429 ns 617.8393 ns 711.5047 ns 1.00 0.02 -
MessagePackSerializeSimpleClasses 101,577.7412 ns 842.4062 ns 970.1163 ns 4.08 0.04 68.36KB
MemoryPackSerializeSimpleClasses 50,480.1358 ns 575.0250 ns 662.1996 ns 2.03 0.03 73.73KB
NinoSerializeSimpleClasses 24,873.8195 ns 90.1320 ns 100.1814 ns 1.00 0.01 75KB
MessagePackDeserializeSimpleStruct 78.7393 ns 0.2466 ns 0.2741 ns 134.80 3.84 -
MemoryPackDeserializeSimpleStruct 2.1311 ns 0.0313 ns 0.0322 ns 3.65 0.12 -
NinoDeserializeSimpleStruct 0.5846 ns 0.0161 ns 0.0172 ns 1.00 0.04 -
MessagePackSerializeSimpleStruct 81.6055 ns 0.8091 ns 0.9318 ns 12.73 0.16 16B
MemoryPackSerializeSimpleStruct 5.0084 ns 0.0200 ns 0.0214 ns 0.78 0.01 16B
NinoSerializeSimpleStruct 6.4121 ns 0.0319 ns 0.0355 ns 1.00 0.01 16B
MessagePackDeserializeSimpleStructs 4,139.3526 ns 21.3154 ns 24.5469 ns 52.82 0.47 -
MemoryPackDeserializeSimpleStructs 103.5239 ns 0.3926 ns 0.3855 ns 1.32 0.01 -
NinoDeserializeSimpleStructs 78.3774 ns 0.4876 ns 0.5420 ns 1.00 0.01 -
MessagePackSerializeSimpleStructs 3,871.1880 ns 40.0389 ns 44.5032 ns 143.67 1.83 1.57KB
MemoryPackSerializeSimpleStructs 32.0509 ns 0.2728 ns 0.3141 ns 1.19 0.01 1.57KB
NinoSerializeSimpleStructs 26.9462 ns 0.1658 ns 0.1703 ns 1.00 0.01 1.57KB
MessagePackDeserializeVectors 267,741.0106 ns 1,712.2761 ns 1,971.8597 ns 17.38 0.61 -
MemoryPackDeserializeVectors 15,715.5631 ns 289.5851 ns 333.4866 ns 1.02 0.04 -
NinoDeserializeVectors 15,421.0168 ns 486.3022 ns 540.5236 ns 1.00 0.05 -
MessagePackSerializeVectors 226,080.9329 ns 387.6205 ns 446.3843 ns 48.07 1.88 205.08KB
MemoryPackSerializeVectors 3,708.6369 ns 4.0880 ns 4.3741 ns 0.79 0.03 156.25KB
NinoSerializeVectors 4,709.1416 ns 145.6544 ns 167.7358 ns 1.00 0.05 156.25KB

v3.2.2

25 Feb 06:12
Compare
Choose a tag to compare
  • [feat] 'NinoFormerNameAttribute' enables modifying a NinoType's name and does not effect the deserialization of old data

Performance Report

expand

BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat)
AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores
.NET SDK 9.0.200
  [Host]     : .NET 8.0.13 (8.0.1325.6609), X64 RyuJIT AVX2
  Job-TLFHYR : .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2

Runtime=.NET 9.0  IterationCount=20  WarmupCount=1  

Method Mean Error StdDev Median Ratio RatioSD Payload
MessagePackDeserializeSimpleClass 2,049.7227 ns 26.2237 ns 29.1476 ns 2,038.0628 ns 4.64 0.08 -
MemoryPackDeserializeSimpleClass 598.8517 ns 5.2697 ns 6.0686 ns 597.6589 ns 1.36 0.02 -
NinoDeserializeSimpleClass 441.9608 ns 4.4530 ns 5.1281 ns 442.4578 ns 1.00 0.02 -
MessagePackSerializeSimpleClass 1,035.7266 ns 2.0144 ns 1.9784 ns 1,035.9857 ns 4.78 0.02 700B
MemoryPackSerializeSimpleClass 496.1701 ns 0.5294 ns 0.5199 ns 496.1572 ns 2.29 0.01 755B
NinoSerializeSimpleClass 216.5047 ns 0.5900 ns 0.6794 ns 216.4567 ns 1.00 0.00 764B
MessagePackDeserializeSimpleClasses 201,616.6027 ns 1,373.4128 ns 1,581.6242 ns 201,324.2528 ns 4.47 0.07 -
MemoryPackDeserializeSimpleClasses 57,609.6414 ns 250.9098 ns 278.8856 ns 57,631.7744 ns 1.28 0.02 -
NinoDeserializeSimpleClasses 45,103.0470 ns 543.1397 ns 603.6983 ns 45,028.5614 ns 1.00 0.02 -
MessagePackSerializeSimpleClasses 100,336.2761 ns 273.3175 ns 314.7529 ns 100,168.5332 ns 4.23 0.02 68.36KB
MemoryPackSerializeSimpleClasses 47,946.5994 ns 312.6185 ns 347.4746 ns 47,898.2361 ns 2.02 0.02 73.73KB
NinoSerializeSimpleClasses 23,702.1904 ns 75.7444 ns 87.2274 ns 23,658.1849 ns 1.00 0.01 75KB
MessagePackDeserializeSimpleStruct 77.1057 ns 0.0873 ns 0.0858 ns 77.0832 ns 128.03 10.64 -
MemoryPackDeserializeSimpleStruct 2.0137 ns 0.0154 ns 0.0171 ns 2.0082 ns 3.34 0.28 -
NinoDeserializeSimpleStruct 0.6066 ns 0.0475 ns 0.0547 ns 0.5735 ns 1.01 0.12 -
MessagePackSerializeSimpleStruct 80.0794 ns 0.2596 ns 0.2777 ns 79.9390 ns 12.55 0.05 16B
MemoryPackSerializeSimpleStruct 5.0448 ns 0.0303 ns 0.0349 ns 5.0436 ns 0.79 0.01 16B
NinoSerializeSimpleStruct 6.3791 ns 0.0106 ns 0.0104 ns 6.3765 ns 1.00 0.00 16B
MessagePackDeserializeSimpleStructs 4,235.3255 ns 24.6030 ns 28.3329 ns 4,229.1921 ns 51.95 1.57 -
MemoryPackDeserializeSimpleStructs 110.8997 ns 2.0054 ns 2.3094 ns 110.4127 ns 1.36 0.05 -
NinoDeserializeSimpleStructs 81.5959 ns 2.1864 ns 2.4301 ns 82.0301 ns 1.00 0.04 -
MessagePackSerializeSimpleStructs 4,593.5939 ns 5.5647 ns 5.7146 ns 4,595.6390 ns 172.92 0.67 1.57KB
MemoryPackSerializeSimpleStructs 31.6454 ns 0.0256 ns 0.0263 ns 31.6452 ns 1.19 0.00 1.57KB
NinoSerializeSimpleStructs 26.5659 ns 0.0902 ns 0.1002 ns 26.5318 ns 1.00 0.01 1.57KB
MessagePackDeserializeVectors 271,817.2316 ns 3,855.7082 ns 4,125.5646 ns 272,779.7222 ns 17.34 0.70 -
MemoryPackDeserializeVectors 16,012.0283 ns 613.4574 ns 681.8563 ns 15,916.0751 ns 1.02 0.06 -
NinoDeserializeVectors 15,697.4858 ns 544.1842 ns 604.8593 ns 15,709.1613 ns 1.00 0.05 -
MessagePackSerializeVectors 216,572.7022 ns 465.2978 ns 456.9847 ns 216,804.8622 ns 52.17 5.58 205.08KB
MemoryPackSerializeVectors 3,870.8240 ns 4.0118 ns 4.6200 ns 3,870.3944 ns 0.93 0.10 156.25KB
NinoSerializeVectors 4,203.0996 ns 432.6144 ns 498.1994 ns 3,831.2845 ns 1.01 0.16 156.25KB

v3.2.1

24 Feb 12:56
Compare
Choose a tag to compare
  • [opt] optimized performance of collection serialization/deserialization (theoretically, if not we will revert)

Performance Report

expand

BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat)
AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores
.NET SDK 9.0.200
  [Host]     : .NET 8.0.13 (8.0.1325.6609), X64 RyuJIT AVX2
  Job-UTQUZM : .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2

Runtime=.NET 9.0  IterationCount=20  WarmupCount=1  

Method Mean Error StdDev Ratio RatioSD Payload
MessagePackDeserializeSimpleClass 1,996.6454 ns 16.2347 ns 18.0449 ns 4.40 0.05 -
MemoryPackDeserializeSimpleClass 607.3002 ns 11.6088 ns 12.4213 ns 1.34 0.03 -
NinoDeserializeSimpleClass 453.8172 ns 3.5605 ns 3.8097 ns 1.00 0.01 -
MessagePackSerializeSimpleClass 1,044.6538 ns 5.3896 ns 5.9905 ns 4.46 0.03 700B
MemoryPackSerializeSimpleClass 498.8170 ns 2.2297 ns 2.4783 ns 2.13 0.01 755B
NinoSerializeSimpleClass 234.0935 ns 0.4592 ns 0.4715 ns 1.00 0.00 764B
MessagePackDeserializeSimpleClasses 199,435.9016 ns 1,308.0054 ns 1,506.3009 ns 4.29 0.05 -
MemoryPackDeserializeSimpleClasses 59,420.8356 ns 356.5375 ns 396.2905 ns 1.28 0.01 -
NinoDeserializeSimpleClasses 46,498.0433 ns 363.5465 ns 388.9907 ns 1.00 0.01 -
MessagePackSerializeSimpleClasses 100,693.6530 ns 244.5965 ns 261.7155 ns 4.12 0.01 68.36KB
MemoryPackSerializeSimpleClasses 48,161.6017 ns 137.6689 ns 158.5397 ns 1.97 0.01 73.73KB
NinoSerializeSimpleClasses 24,411.7388 ns 65.7024 ns 64.5285 ns 1.00 0.00 75KB
MessagePackDeserializeSimpleStruct 78.6440 ns 0.2927 ns 0.3253 ns 139.64 2.21 -
MemoryPackDeserializeSimpleStruct 2.0309 ns 0.0130 ns 0.0139 ns 3.61 0.06 -
NinoDeserializeSimpleStruct 0.5633 ns 0.0083 ns 0.0089 ns 1.00 0.02 -
MessagePackSerializeSimpleStruct 78.8856 ns 0.3145 ns 0.3622 ns 12.28 0.08 16B
MemoryPackSerializeSimpleStruct 5.0012 ns 0.0200 ns 0.0214 ns 0.78 0.01 16B
NinoSerializeSimpleStruct 6.4232 ns 0.0319 ns 0.0341 ns 1.00 0.01 16B
MessagePackDeserializeSimpleStructs 4,205.7774 ns 16.5692 ns 19.0811 ns 46.34 3.53 -
MemoryPackDeserializeSimpleStructs 127.9556 ns 3.7993 ns 4.2230 ns 1.41 0.12 -
NinoDeserializeSimpleStructs 91.2840 ns 6.1381 ns 7.0686 ns 1.01 0.11 -
MessagePackSerializeSimpleStructs 3,902.4568 ns 9.4722 ns 9.3030 ns 129.69 0.77 1.57KB
MemoryPackSerializeSimpleStructs 30.7110 ns 0.1845 ns 0.2051 ns 1.02 0.01 1.57KB
NinoSerializeSimpleStructs 30.0916 ns 0.1461 ns 0.1682 ns 1.00 0.01 1.57KB
MessagePackDeserializeVectors 263,521.0946 ns 1,269.8777 ns 1,411.4657 ns 16.88 0.43 -
MemoryPackDeserializeVectors 15,954.4614 ns 582.5766 ns 670.8961 ns 1.02 0.05 -
NinoDeserializeVectors 15,623.3525 ns 350.5012 ns 403.6377 ns 1.00 0.04 -
MessagePackSerializeVectors 224,277.4858 ns 1,446.9605 ns 1,485.9219 ns 59.49 0.40 205.08KB
MemoryPackSerializeVectors 3,616.5087 ns 3.8493 ns 4.1187 ns 0.96 0.00 156.25KB
NinoSerializeVectors 3,769.7949 ns 6.1559 ns 7.0892 ns 1.00 0.00 156.25KB

v3.2.0

22 Feb 13:08
Compare
Choose a tag to compare
  • [feat] allow version tolerance for elements in collections
  • [fix] ensure version tolerance for string members of a ninotype annotated class

Note that the performance might drop a little bit but still reasonably fast compared to other libraries

In addition, v3.2.0 may unable to deserialize data serialized from earlier versions, please refer to the documentation for further information (including migration guide)

Performance Report

expand

BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat)
AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores
.NET SDK 9.0.200
  [Host]     : .NET 8.0.13 (8.0.1325.6609), X64 RyuJIT AVX2
  Job-FTDCJR : .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2

Runtime=.NET 9.0  IterationCount=20  WarmupCount=1  

Method Mean Error StdDev Ratio RatioSD Payload
MessagePackDeserializeSimpleClass 2,004.3440 ns 22.6507 ns 23.2606 ns 4.58 0.12 -
MemoryPackDeserializeSimpleClass 618.2868 ns 7.6728 ns 8.8360 ns 1.41 0.04 -
NinoDeserializeSimpleClass 438.0764 ns 9.3359 ns 10.7512 ns 1.00 0.03 -
MessagePackSerializeSimpleClass 1,034.7936 ns 1.1999 ns 1.1224 ns 4.57 0.02 700B
MemoryPackSerializeSimpleClass 520.9437 ns 2.8275 ns 3.1428 ns 2.30 0.02 755B
NinoSerializeSimpleClass 226.4451 ns 0.6691 ns 0.7437 ns 1.00 0.00 764B
MessagePackDeserializeSimpleClasses 200,198.0291 ns 965.8188 ns 1,033.4153 ns 4.29 0.06 -
MemoryPackDeserializeSimpleClasses 58,989.2560 ns 468.7876 ns 481.4103 ns 1.26 0.02 -
NinoDeserializeSimpleClasses 46,679.3881 ns 536.1715 ns 573.6975 ns 1.00 0.02 -
MessagePackSerializeSimpleClasses 100,763.8491 ns 350.3442 ns 389.4067 ns 4.06 0.02 68.36KB
MemoryPackSerializeSimpleClasses 49,263.1717 ns 389.3098 ns 432.7168 ns 1.99 0.02 73.73KB
NinoSerializeSimpleClasses 24,791.2529 ns 67.5691 ns 75.1029 ns 1.00 0.00 75KB
MessagePackDeserializeSimpleStruct 76.8228 ns 0.1039 ns 0.1067 ns 137.04 2.79 -
MemoryPackDeserializeSimpleStruct 2.0433 ns 0.0093 ns 0.0103 ns 3.64 0.08 -
NinoDeserializeSimpleStruct 0.5608 ns 0.0102 ns 0.0117 ns 1.00 0.03 -
MessagePackSerializeSimpleStruct 82.1936 ns 0.0523 ns 0.0513 ns 9.50 0.03 16B
MemoryPackSerializeSimpleStruct 7.8364 ns 0.0262 ns 0.0291 ns 0.91 0.00 16B
NinoSerializeSimpleStruct 8.6536 ns 0.0249 ns 0.0276 ns 1.00 0.00 16B
MessagePackDeserializeSimpleStructs 4,237.3801 ns 16.7630 ns 19.3043 ns 45.72 1.74 -
MemoryPackDeserializeSimpleStructs 118.0844 ns 2.1600 ns 2.4008 ns 1.27 0.05 -
NinoDeserializeSimpleStructs 92.8156 ns 3.1780 ns 3.6598 ns 1.00 0.05 -
MessagePackSerializeSimpleStructs 3,995.3842 ns 3.5502 ns 3.6458 ns 87.97 0.10 1.57KB
MemoryPackSerializeSimpleStructs 51.0031 ns 0.0809 ns 0.0831 ns 1.12 0.00 1.57KB
NinoSerializeSimpleStructs 45.4198 ns 0.0325 ns 0.0304 ns 1.00 0.00 1.57KB

v3.1.7

21 Feb 05:17
Compare
Choose a tag to compare
  • [fix] private members not deserialized in versions other than net8.0 onwards
  • [fix] generic parameterized members in generic ninotype accepted class could not be detected automatically #141
  • [update] polymorphic class analyzer now gives warnings for subtypes of ninotypes not being annotated with ninotype

Performance Report

expand

BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat)
AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores
.NET SDK 9.0.200
  [Host]     : .NET 8.0.13 (8.0.1325.6609), X64 RyuJIT AVX2
  Job-CLWFMJ : .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2

Runtime=.NET 9.0  IterationCount=20  WarmupCount=1  

Method Mean Error StdDev Ratio RatioSD Payload
MessagePackDeserializeSimpleClass 1,993.5988 ns 13.9185 ns 15.4703 ns 4.87 0.06 -
MemoryPackDeserializeSimpleClass 614.7717 ns 5.0560 ns 5.8225 ns 1.50 0.02 -
NinoDeserializeSimpleClass 409.1681 ns 3.3047 ns 3.6732 ns 1.00 0.01 -
MessagePackSerializeSimpleClass 1,040.4506 ns 1.0928 ns 1.1222 ns 6.04 0.03 700B
MemoryPackSerializeSimpleClass 503.6766 ns 2.3678 ns 2.6318 ns 2.92 0.02 755B
NinoSerializeSimpleClass 172.2040 ns 0.6464 ns 0.7185 ns 1.00 0.01 724B
MessagePackDeserializeSimpleClasses 200,021.8059 ns 846.5230 ns 905.7701 ns 4.53 0.10 -
MemoryPackDeserializeSimpleClasses 58,470.6426 ns 818.8164 ns 942.9502 ns 1.32 0.03 -
NinoDeserializeSimpleClasses 44,195.1658 ns 823.5065 ns 948.3513 ns 1.00 0.03 -
MessagePackSerializeSimpleClasses 101,093.1901 ns 483.2914 ns 537.1771 ns 5.59 0.03 68.36KB
MemoryPackSerializeSimpleClasses 50,237.0820 ns 203.9580 ns 226.6988 ns 2.78 0.01 73.73KB
NinoSerializeSimpleClasses 18,081.3676 ns 47.9330 ns 49.2237 ns 1.00 0.00 70.71KB
MessagePackDeserializeSimpleStruct 87.2172 ns 0.1031 ns 0.1059 ns 155.67 1.02 -
MemoryPackDeserializeSimpleStruct 2.0183 ns 0.0054 ns 0.0056 ns 3.60 0.03 -
NinoDeserializeSimpleStruct 0.5603 ns 0.0036 ns 0.0037 ns 1.00 0.01 -
MessagePackSerializeSimpleStruct 82.1992 ns 0.2852 ns 0.3284 ns 9.59 0.04 16B
MemoryPackSerializeSimpleStruct 7.8212 ns 0.0192 ns 0.0198 ns 0.91 0.00 16B
NinoSerializeSimpleStruct 8.5745 ns 0.0083 ns 0.0085 ns 1.00 0.00 16B
MessagePackDeserializeSimpleStructs 4,209.7948 ns 10.8153 ns 11.5722 ns 49.83 0.43 -
MemoryPackDeserializeSimpleStructs 111.0837 ns 1.6337 ns 1.8813 ns 1.31 0.02 -
NinoDeserializeSimpleStructs 84.4814 ns 0.7013 ns 0.7201 ns 1.00 0.01 -
MessagePackSerializeSimpleStructs 3,909.8772 ns 18.4597 ns 21.2582 ns 80.55 0.48 1.57KB
MemoryPackSerializeSimpleStructs 53.4545 ns 0.0981 ns 0.1049 ns 1.10 0.00 1.57KB
NinoSerializeSimpleStructs 48.5413 ns 0.1143 ns 0.1317 ns 1.00 0.00 1.57KB

v3.1.6

20 Feb 22:57
Compare
Choose a tag to compare
  • [change] subtype not annotated with ninotype where base type is ninotype is now allowed but comes with an info
  • [fix] prevent the serializer generating switch clauses for the same type multiple times

Performance Report

expand

BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat)
AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores
.NET SDK 9.0.200
  [Host]     : .NET 8.0.13 (8.0.1325.6609), X64 RyuJIT AVX2
  Job-MUVRAJ : .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2

Runtime=.NET 9.0  IterationCount=20  WarmupCount=1  

Method Mean Error StdDev Ratio RatioSD Payload
MessagePackDeserializeSimpleClass 2,001.1869 ns 37.9804 ns 43.7383 ns 4.97 0.11 -
MemoryPackDeserializeSimpleClass 573.4120 ns 8.7797 ns 10.1107 ns 1.43 0.03 -
NinoDeserializeSimpleClass 402.3603 ns 2.1543 ns 2.3945 ns 1.00 0.01 -
MessagePackSerializeSimpleClass 1,045.5085 ns 1.9644 ns 2.1019 ns 5.98 0.02 700B
MemoryPackSerializeSimpleClass 493.1806 ns 1.4040 ns 1.3789 ns 2.82 0.01 755B
NinoSerializeSimpleClass 174.9724 ns 0.5349 ns 0.5945 ns 1.00 0.00 724B
MessagePackDeserializeSimpleClasses 191,820.1351 ns 1,002.1130 ns 1,154.0348 ns 4.41 0.05 -
MemoryPackDeserializeSimpleClasses 56,605.9488 ns 235.7853 ns 271.5307 ns 1.30 0.01 -
NinoDeserializeSimpleClasses 43,494.7488 ns 403.3442 ns 431.5738 ns 1.00 0.01 -
MessagePackSerializeSimpleClasses 100,980.8393 ns 353.4493 ns 378.1868 ns 5.45 0.03 68.36KB
MemoryPackSerializeSimpleClasses 51,393.1636 ns 318.2687 ns 366.5187 ns 2.77 0.02 73.73KB
NinoSerializeSimpleClasses 18,529.4919 ns 69.6950 ns 74.5728 ns 1.00 0.01 70.71KB
MessagePackDeserializeSimpleStruct 75.9288 ns 0.3990 ns 0.4595 ns 137.23 3.49 -
MemoryPackDeserializeSimpleStruct 2.0131 ns 0.0095 ns 0.0098 ns 3.64 0.09 -
NinoDeserializeSimpleStruct 0.5536 ns 0.0130 ns 0.0139 ns 1.00 0.03 -
MessagePackSerializeSimpleStruct 82.3848 ns 0.4928 ns 0.5273 ns 9.65 0.07 16B
MemoryPackSerializeSimpleStruct 7.8308 ns 0.0407 ns 0.0468 ns 0.92 0.01 16B
NinoSerializeSimpleStruct 8.5393 ns 0.0301 ns 0.0322 ns 1.00 0.01 16B
MessagePackDeserializeSimpleStructs 4,144.5443 ns 19.6225 ns 20.9959 ns 51.89 0.35 -
MemoryPackDeserializeSimpleStructs 105.2316 ns 1.5291 ns 1.7609 ns 1.32 0.02 -
NinoDeserializeSimpleStructs 79.8797 ns 0.3475 ns 0.3862 ns 1.00 0.01 -
MessagePackSerializeSimpleStructs 3,894.5777 ns 30.0966 ns 34.6593 ns 81.53 1.11 1.57KB
MemoryPackSerializeSimpleStructs 51.0541 ns 0.3787 ns 0.4361 ns 1.07 0.01 1.57KB
NinoSerializeSimpleStructs 47.7717 ns 0.4412 ns 0.5080 ns 1.00 0.01 1.57KB

v3.1.5

20 Feb 15:19
Compare
Choose a tag to compare
  • [fix] throw exception when serializing a non-ninotype polymorphic subtype in basetype's method
  • [feat] analyzer to provide useful code feedbacks to avoid compilation/runtime errors - with unit test provided

Performance Report

expand

BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat)
AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores
.NET SDK 9.0.200
  [Host]     : .NET 8.0.13 (8.0.1325.6609), X64 RyuJIT AVX2
  Job-CFYWUE : .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2

Runtime=.NET 9.0  IterationCount=20  WarmupCount=1  

Method Mean Error StdDev Ratio RatioSD Payload
MessagePackDeserializeSimpleClass 2,051.2741 ns 20.0670 ns 19.7085 ns 5.02 0.06 -
MemoryPackDeserializeSimpleClass 573.9536 ns 4.3352 ns 4.9924 ns 1.40 0.02 -
NinoDeserializeSimpleClass 408.5756 ns 2.7146 ns 2.9046 ns 1.00 0.01 -
MessagePackSerializeSimpleClass 1,031.4298 ns 3.6260 ns 4.1757 ns 6.11 0.03 700B
MemoryPackSerializeSimpleClass 514.9892 ns 0.4587 ns 0.4505 ns 3.05 0.01 755B
NinoSerializeSimpleClass 168.8037 ns 0.2201 ns 0.2446 ns 1.00 0.00 724B
MessagePackDeserializeSimpleClasses 195,050.5637 ns 674.5578 ns 692.7212 ns 4.39 0.05 -
MemoryPackDeserializeSimpleClasses 57,322.2983 ns 225.5577 ns 241.3442 ns 1.29 0.01 -
NinoDeserializeSimpleClasses 44,471.1779 ns 445.7855 ns 495.4895 ns 1.00 0.02 -
MessagePackSerializeSimpleClasses 101,050.0174 ns 457.4877 ns 526.8435 ns 5.68 0.03 68.36KB
MemoryPackSerializeSimpleClasses 50,614.4208 ns 227.6230 ns 262.1310 ns 2.85 0.02 73.73KB
NinoSerializeSimpleClasses 17,788.9549 ns 35.7569 ns 35.1181 ns 1.00 0.00 70.71KB
MessagePackDeserializeSimpleStruct 76.4640 ns 0.1853 ns 0.2134 ns 138.17 2.56 -
MemoryPackDeserializeSimpleStruct 2.0247 ns 0.0084 ns 0.0093 ns 3.66 0.07 -
NinoDeserializeSimpleStruct 0.5536 ns 0.0092 ns 0.0106 ns 1.00 0.03 -
MessagePackSerializeSimpleStruct 82.1678 ns 0.2645 ns 0.3046 ns 9.63 0.04 16B
MemoryPackSerializeSimpleStruct 7.8518 ns 0.0284 ns 0.0327 ns 0.92 0.00 16B
NinoSerializeSimpleStruct 8.5364 ns 0.0163 ns 0.0167 ns 1.00 0.00 16B
MessagePackDeserializeSimpleStructs 4,243.5838 ns 49.4621 ns 52.9238 ns 51.77 0.87 -
MemoryPackDeserializeSimpleStructs 106.6506 ns 1.5457 ns 1.7180 ns 1.30 0.03 -
NinoDeserializeSimpleStructs 81.9746 ns 0.9104 ns 0.9741 ns 1.00 0.02 -
MessagePackSerializeSimpleStructs 3,902.1322 ns 16.3904 ns 18.8752 ns 79.61 0.40 1.57KB
MemoryPackSerializeSimpleStructs 50.0928 ns 0.0782 ns 0.0803 ns 1.02 0.00 1.57KB
NinoSerializeSimpleStructs 49.0182 ns 0.0762 ns 0.0782 ns 1.00 0.00 1.57KB

v3.1.4

18 Feb 11:16
Compare
Choose a tag to compare
  • [opt] make serialization slightly faster via using a shared bufferwriter while it is not serializing things in parallel

Performance Report

expand

BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat)
AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores
.NET SDK 9.0.200
  [Host]     : .NET 8.0.13 (8.0.1325.6609), X64 RyuJIT AVX2
  Job-WVNICL : .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2

Runtime=.NET 9.0  IterationCount=20  WarmupCount=1  

Method Mean Error StdDev Ratio RatioSD Payload
MessagePackDeserializeSimpleClass 1,988.2697 ns 32.0367 ns 36.8936 ns 4.96 0.09 -
MemoryPackDeserializeSimpleClass 573.2507 ns 2.6845 ns 2.9838 ns 1.43 0.01 -
NinoDeserializeSimpleClass 400.7535 ns 1.4634 ns 1.6265 ns 1.00 0.01 -
MessagePackSerializeSimpleClass 1,030.4215 ns 4.5942 ns 5.1064 ns 5.87 0.05 700B
MemoryPackSerializeSimpleClass 532.3163 ns 2.1490 ns 2.2994 ns 3.03 0.02 755B
NinoSerializeSimpleClass 175.5698 ns 1.0395 ns 1.1123 ns 1.00 0.01 724B
MessagePackDeserializeSimpleClasses 192,175.7068 ns 872.1247 ns 1,004.3401 ns 4.28 0.08 -
MemoryPackDeserializeSimpleClasses 57,253.8884 ns 350.3758 ns 359.8101 ns 1.28 0.02 -
NinoDeserializeSimpleClasses 44,905.2994 ns 744.1691 ns 856.9862 ns 1.00 0.03 -
MessagePackSerializeSimpleClasses 101,128.9258 ns 329.4064 ns 352.4612 ns 5.50 0.03 68.36KB
MemoryPackSerializeSimpleClasses 50,107.6096 ns 468.9850 ns 540.0838 ns 2.73 0.03 73.73KB
NinoSerializeSimpleClasses 18,384.2238 ns 76.1675 ns 87.7147 ns 1.00 0.01 70.71KB
MessagePackDeserializeSimpleStruct 76.5394 ns 0.1847 ns 0.2127 ns 136.36 2.56 -
MemoryPackDeserializeSimpleStruct 2.0440 ns 0.0137 ns 0.0152 ns 3.64 0.07 -
NinoDeserializeSimpleStruct 0.5615 ns 0.0093 ns 0.0108 ns 1.00 0.03 -
MessagePackSerializeSimpleStruct 83.4835 ns 0.3941 ns 0.4539 ns 9.74 0.08 16B
MemoryPackSerializeSimpleStruct 7.8985 ns 0.0449 ns 0.0518 ns 0.92 0.01 16B
NinoSerializeSimpleStruct 8.5739 ns 0.0437 ns 0.0503 ns 1.00 0.01 16B
MessagePackDeserializeSimpleStructs 4,190.5427 ns 45.5507 ns 52.4563 ns 50.67 0.79 -
MemoryPackDeserializeSimpleStructs 109.8279 ns 1.3538 ns 1.5047 ns 1.33 0.02 -
NinoDeserializeSimpleStructs 82.7086 ns 0.7211 ns 0.8304 ns 1.00 0.01 -
MessagePackSerializeSimpleStructs 3,911.8417 ns 4.3079 ns 4.2309 ns 80.05 0.23 1.57KB
MemoryPackSerializeSimpleStructs 49.5671 ns 0.2052 ns 0.2281 ns 1.01 0.01 1.57KB
NinoSerializeSimpleStructs 48.8707 ns 0.1394 ns 0.1370 ns 1.00 0.00 1.57KB

v3.1.3

18 Feb 06:45
Compare
Choose a tag to compare
  • [fix] empty collection runtime error fixed

Performance Report

expand

BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat)
AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores
.NET SDK 9.0.200
  [Host]     : .NET 8.0.13 (8.0.1325.6609), X64 RyuJIT AVX2
  Job-LNGWMH : .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2

Runtime=.NET 9.0  IterationCount=20  WarmupCount=1  

Method Mean Error StdDev Ratio RatioSD Payload
MessagePackDeserializeSimpleClass 1,981.0547 ns 10.0887 ns 11.6182 ns 4.93 0.04 -
MemoryPackDeserializeSimpleClass 580.9453 ns 7.1468 ns 8.2303 ns 1.45 0.02 -
NinoDeserializeSimpleClass 401.9138 ns 2.5479 ns 2.9342 ns 1.00 0.01 -
MessagePackSerializeSimpleClass 1,096.9102 ns 5.0955 ns 5.8680 ns 4.72 0.03 700B
MemoryPackSerializeSimpleClass 579.1345 ns 4.6559 ns 5.1750 ns 2.49 0.02 755B
NinoSerializeSimpleClass 232.3109 ns 0.9650 ns 1.0726 ns 1.00 0.01 724B
MessagePackDeserializeSimpleClasses 196,530.0433 ns 674.9711 ns 777.2978 ns 4.55 0.10 -
MemoryPackDeserializeSimpleClasses 55,913.9641 ns 498.6692 ns 554.2695 ns 1.30 0.03 -
NinoDeserializeSimpleClasses 43,185.7512 ns 865.2979 ns 961.7763 ns 1.00 0.03 -
MessagePackSerializeSimpleClasses 109,216.6918 ns 629.6977 ns 725.1608 ns 5.14 0.04 68.36KB
MemoryPackSerializeSimpleClasses 54,326.3359 ns 284.6133 ns 316.3469 ns 2.55 0.02 73.73KB
NinoSerializeSimpleClasses 21,267.2834 ns 83.1261 ns 88.9440 ns 1.00 0.01 70.71KB
MessagePackDeserializeSimpleStruct 75.0119 ns 0.2080 ns 0.2226 ns 128.91 2.94 -
MemoryPackDeserializeSimpleStruct 2.0474 ns 0.0159 ns 0.0176 ns 3.52 0.08 -
NinoDeserializeSimpleStruct 0.5822 ns 0.0117 ns 0.0135 ns 1.00 0.03 -
MessagePackSerializeSimpleStruct 75.3467 ns 0.1494 ns 0.1598 ns 9.89 0.15 16B
MemoryPackSerializeSimpleStruct 16.9597 ns 0.7726 ns 0.8897 ns 2.23 0.12 16B
NinoSerializeSimpleStruct 7.6175 ns 0.1021 ns 0.1135 ns 1.00 0.02 16B
MessagePackDeserializeSimpleStructs 4,275.7878 ns 30.8739 ns 34.3162 ns 49.41 0.96 -
MemoryPackDeserializeSimpleStructs 118.9930 ns 1.9307 ns 2.2234 ns 1.37 0.04 -
NinoDeserializeSimpleStructs 86.5706 ns 1.3754 ns 1.5839 ns 1.00 0.03 -
MessagePackSerializeSimpleStructs 4,047.4877 ns 20.1925 ns 23.2537 ns 30.68 0.30 1.57KB
MemoryPackSerializeSimpleStructs 97.0084 ns 1.9391 ns 2.2330 ns 0.74 0.02 1.57KB
NinoSerializeSimpleStructs 131.9256 ns 0.9293 ns 1.0701 ns 1.00 0.01 1.57KB

v3.1.2

15 Feb 07:26
Compare
Choose a tag to compare
  • [fix] fix #140
  • [opt] optimised generator performance (removed 90% of the overhead) via IncrementalValuesProvider and virtualization

Performance Report

expand

BenchmarkDotNet v0.14.0, Ubuntu 24.04.1 LTS (Noble Numbat)
AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores
.NET SDK 9.0.200
  [Host]     : .NET 8.0.13 (8.0.1325.6609), X64 RyuJIT AVX2
  Job-UEWEOT : .NET 9.0.2 (9.0.225.6610), X64 RyuJIT AVX2

Runtime=.NET 9.0  IterationCount=20  WarmupCount=1  

Method Mean Error StdDev Ratio RatioSD Payload
MessagePackDeserializeSimpleClass 1,959.1359 ns 18.7002 ns 20.0090 ns 4.90 0.08 -
MemoryPackDeserializeSimpleClass 573.6932 ns 5.8954 ns 6.5527 ns 1.43 0.03 -
NinoDeserializeSimpleClass 400.1451 ns 5.6657 ns 5.8182 ns 1.00 0.02 -
MessagePackSerializeSimpleClass 1,092.3580 ns 5.7120 ns 6.5779 ns 4.66 0.04 700B
MemoryPackSerializeSimpleClass 593.3275 ns 5.2399 ns 6.0343 ns 2.53 0.03 755B
NinoSerializeSimpleClass 234.5256 ns 1.2272 ns 1.3640 ns 1.00 0.01 724B
MessagePackDeserializeSimpleClasses 194,933.4930 ns 1,301.0434 ns 1,498.2835 ns 4.58 0.05 -
MemoryPackDeserializeSimpleClasses 56,029.8763 ns 351.5432 ns 404.8377 ns 1.32 0.01 -
NinoDeserializeSimpleClasses 42,522.8110 ns 265.9880 ns 306.3122 ns 1.00 0.01 -
MessagePackSerializeSimpleClasses 109,040.6847 ns 474.4181 ns 546.3406 ns 5.12 0.03 68.36KB
MemoryPackSerializeSimpleClasses 54,603.7404 ns 274.4381 ns 316.0433 ns 2.56 0.02 73.73KB
NinoSerializeSimpleClasses 21,305.1609 ns 100.4373 ns 103.1417 ns 1.00 0.01 70.71KB
MessagePackDeserializeSimpleStruct 75.5654 ns 0.2044 ns 0.2187 ns 133.11 1.89 -
MemoryPackDeserializeSimpleStruct 2.0267 ns 0.0041 ns 0.0040 ns 3.57 0.05 -
NinoDeserializeSimpleStruct 0.5678 ns 0.0073 ns 0.0081 ns 1.00 0.02 -
MessagePackSerializeSimpleStruct 74.8840 ns 0.4499 ns 0.4814 ns 9.48 0.07 16B
MemoryPackSerializeSimpleStruct 18.1835 ns 0.4516 ns 0.5019 ns 2.30 0.06 16B
NinoSerializeSimpleStruct 7.8963 ns 0.0327 ns 0.0350 ns 1.00 0.01 16B
MessagePackDeserializeSimpleStructs 4,161.4533 ns 26.2644 ns 30.2462 ns 50.46 1.11 -
MemoryPackDeserializeSimpleStructs 104.0903 ns 1.3029 ns 1.5005 ns 1.26 0.03 -
NinoDeserializeSimpleStructs 82.5129 ns 1.5536 ns 1.7891 ns 1.00 0.03 -
MessagePackSerializeSimpleStructs 3,979.8805 ns 13.3968 ns 14.3345 ns 49.39 0.33 1.57KB
MemoryPackSerializeSimpleStructs 86.6298 ns 1.2548 ns 1.4451 ns 1.08 0.02 1.57KB
NinoSerializeSimpleStructs 80.5853 ns 0.4170 ns 0.4635 ns 1.00 0.01 1.57KB