Skip to content

Releases: JasonXuDeveloper/Nino

v3.2.5

03 Mar 14:19
Compare
Choose a tag to compare
  • [feat] support deserialize to collection virtual interfaces (IList, IDictionary, Dictionary<int, IDictionary<X,Y>[]>, etc.)

Performance Report

expand

BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 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-CQQTKR : .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,026.1171 ns 13.0717 ns 15.0534 ns 4.79 0.10 -
MemoryPackDeserializeSimpleClass 579.1375 ns 5.9236 ns 6.8217 ns 1.37 0.03 -
NinoDeserializeSimpleClass 423.4281 ns 7.3150 ns 8.4240 ns 1.00 0.03 -
MessagePackSerializeSimpleClass 1,039.6652 ns 3.6135 ns 4.0164 ns 4.67 0.03 700B
MemoryPackSerializeSimpleClass 497.9463 ns 2.1423 ns 2.2923 ns 2.24 0.01 755B
NinoSerializeSimpleClass 222.3951 ns 0.8131 ns 0.9038 ns 1.00 0.01 764B
MessagePackDeserializeSimpleClasses 197,741.8859 ns 957.9060 ns 1,103.1260 ns 4.39 0.06 -
MemoryPackDeserializeSimpleClasses 57,060.8529 ns 254.8968 ns 261.7602 ns 1.27 0.02 -
NinoDeserializeSimpleClasses 45,038.9390 ns 519.3996 ns 555.7517 ns 1.00 0.02 -
MessagePackSerializeSimpleClasses 102,406.8637 ns 611.3756 ns 704.0610 ns 4.25 0.03 68.36KB
MemoryPackSerializeSimpleClasses 48,134.2987 ns 323.2547 ns 359.2967 ns 2.00 0.02 73.73KB
NinoSerializeSimpleClasses 24,109.4089 ns 80.3291 ns 89.2855 ns 1.00 0.01 75KB
MessagePackDeserializeSimpleStruct 76.8635 ns 0.2282 ns 0.2628 ns 139.54 1.75 -
MemoryPackDeserializeSimpleStruct 2.0002 ns 0.0118 ns 0.0131 ns 3.63 0.05 -
NinoDeserializeSimpleStruct 0.5509 ns 0.0060 ns 0.0069 ns 1.00 0.02 -
MessagePackSerializeSimpleStruct 81.2985 ns 0.2249 ns 0.2590 ns 12.72 0.06 16B
MemoryPackSerializeSimpleStruct 5.6211 ns 0.3033 ns 0.3493 ns 0.88 0.05 16B
NinoSerializeSimpleStruct 6.3902 ns 0.0199 ns 0.0213 ns 1.00 0.00 16B
MessagePackDeserializeSimpleStructs 4,228.5890 ns 23.1556 ns 26.6660 ns 49.87 1.25 -
MemoryPackDeserializeSimpleStructs 108.1880 ns 2.2623 ns 2.6053 ns 1.28 0.04 -
NinoDeserializeSimpleStructs 84.8428 ns 1.8653 ns 2.1481 ns 1.00 0.03 -
MessagePackSerializeSimpleStructs 3,977.7907 ns 16.6471 ns 19.1708 ns 147.99 0.87 1.57KB
MemoryPackSerializeSimpleStructs 30.5206 ns 0.1392 ns 0.1547 ns 1.14 0.01 1.57KB
NinoSerializeSimpleStructs 26.8791 ns 0.0835 ns 0.0962 ns 1.00 0.00 1.57KB
MessagePackDeserializeVectors 255,883.6691 ns 1,672.8184 ns 1,926.4202 ns 16.53 0.59 -
MemoryPackDeserializeVectors 15,760.1919 ns 489.4245 ns 543.9940 ns 1.02 0.05 -
NinoDeserializeVectors 15,496.7016 ns 488.1333 ns 562.1350 ns 1.00 0.05 -
MessagePackSerializeVectors 229,933.9904 ns 228.3642 ns 253.8262 ns 64.48 0.13 205.08KB
MemoryPackSerializeVectors 3,708.3074 ns 52.0949 ns 59.9925 ns 1.04 0.02 156.25KB
NinoSerializeVectors 3,565.9340 ns 5.2720 ns 6.0712 ns 1.00 0.00 156.25KB

v3.2.4

03 Mar 12:51
Compare
Choose a tag to compare
  • [feat] provide more annotators to prevent potential problems when defining ninotypes
  • [fix] eliminate private/protected collection element type when generating collection code
  • [fix] support serializing/deserializing cross-project type's private members via explicit ordering for platform below NET8.0

Performance Report

expand

BenchmarkDotNet v0.14.0, Ubuntu 24.04.2 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-JMUIMQ : .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,031.7037 ns 14.5465 ns 15.5646 ns 4.78 0.07 -
MemoryPackDeserializeSimpleClass 596.6741 ns 12.3746 ns 14.2506 ns 1.40 0.04 -
NinoDeserializeSimpleClass 425.3424 ns 4.4882 ns 4.9886 ns 1.00 0.02 -
MessagePackSerializeSimpleClass 1,056.1337 ns 3.6050 ns 3.8573 ns 4.79 0.02 700B
MemoryPackSerializeSimpleClass 493.9918 ns 1.6571 ns 1.7731 ns 2.24 0.01 755B
NinoSerializeSimpleClass 220.3131 ns 0.6961 ns 0.7737 ns 1.00 0.00 764B
MessagePackDeserializeSimpleClasses 197,781.2444 ns 1,578.3945 ns 1,817.6815 ns 4.33 0.06 -
MemoryPackDeserializeSimpleClasses 58,178.0264 ns 463.0417 ns 533.2395 ns 1.27 0.02 -
NinoDeserializeSimpleClasses 45,660.4323 ns 479.5958 ns 552.3033 ns 1.00 0.02 -
MessagePackSerializeSimpleClasses 100,468.5973 ns 246.8387 ns 264.1146 ns 4.30 0.02 68.36KB
MemoryPackSerializeSimpleClasses 48,341.6069 ns 210.4435 ns 242.3470 ns 2.07 0.01 73.73KB
NinoSerializeSimpleClasses 23,388.0767 ns 110.7863 ns 123.1387 ns 1.00 0.01 75KB
MessagePackDeserializeSimpleStruct 77.3390 ns 0.0786 ns 0.0807 ns 134.81 2.76 -
MemoryPackDeserializeSimpleStruct 1.9995 ns 0.0034 ns 0.0033 ns 3.49 0.07 -
NinoDeserializeSimpleStruct 0.5739 ns 0.0109 ns 0.0121 ns 1.00 0.03 -
MessagePackSerializeSimpleStruct 79.4188 ns 0.2751 ns 0.3168 ns 12.19 0.08 16B
MemoryPackSerializeSimpleStruct 5.0475 ns 0.0190 ns 0.0212 ns 0.77 0.01 16B
NinoSerializeSimpleStruct 6.5168 ns 0.0305 ns 0.0351 ns 1.00 0.01 16B
MessagePackDeserializeSimpleStructs 4,329.2026 ns 20.2704 ns 22.5305 ns 50.44 0.62 -
MemoryPackDeserializeSimpleStructs 111.0956 ns 0.8637 ns 0.9600 ns 1.29 0.02 -
NinoDeserializeSimpleStructs 85.8411 ns 0.8839 ns 0.9825 ns 1.00 0.02 -
MessagePackSerializeSimpleStructs 4,027.2295 ns 26.0048 ns 29.9472 ns 149.77 1.32 1.57KB
MemoryPackSerializeSimpleStructs 30.6942 ns 0.1400 ns 0.1612 ns 1.14 0.01 1.57KB
NinoSerializeSimpleStructs 26.8893 ns 0.1207 ns 0.1390 ns 1.00 0.01 1.57KB
MessagePackDeserializeVectors 264,571.9284 ns 1,859.6471 ns 2,141.5723 ns 16.95 0.59 -
MemoryPackDeserializeVectors 15,652.0162 ns 423.8198 ns 435.2318 ns 1.00 0.04 -
NinoDeserializeVectors 15,626.1037 ns 478.2631 ns 550.7685 ns 1.00 0.05 -
MessagePackSerializeVectors 220,502.0793 ns 180.7372 ns 177.5081 ns 58.85 1.06 205.08KB
MemoryPackSerializeVectors 4,122.2957 ns 132.2212 ns 152.2661 ns 1.10 0.04 156.25KB
NinoSerializeVectors 3,748.3052 ns 75.1178 ns 73.7757 ns 1.00 0.03 156.25KB

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