Skip to content

Instantly share code, notes, and snippets.

@ReubenBond
Created November 11, 2025 23:52
Show Gist options
  • Select an option

  • Save ReubenBond/d4ec91dbb04bd55c4d9021a8169611b5 to your computer and use it in GitHub Desktop.

Select an option

Save ReubenBond/d4ec91dbb04bd55c4d9021a8169611b5 to your computer and use it in GitHub Desktop.
OrleansBenchmarksConsolidated.md

ArrayDeserializeBenchmark

Method Runtime Mean Error StdDev Ratio RatioSD Gen0 Gen1 Gen2 Allocated Alloc Ratio
MessagePackDeserialize .NET 8.0 13.68 μs 0.152 μs 0.142 μs 1.00 0.01 0.0153 - - 12024 B 1.00
ProtobufNetDeserialize .NET 8.0 23.32 μs 0.147 μs 0.130 μs 1.71 0.02 - - - 12024 B 1.00
SystemTextJsonDeserialize .NET 8.0 60.99 μs 0.987 μs 0.875 μs 4.46 0.08 - - - 69272 B 5.76
OrleansDeserialize .NET 8.0 23.88 μs 0.216 μs 0.202 μs 1.75 0.02 - - - 12024 B 1.00
MessagePackDeserialize .NET 9.0 12.81 μs 0.154 μs 0.128 μs 1.00 0.01 0.1526 - - 12024 B 1.00
ProtobufNetDeserialize .NET 9.0 NA NA NA ? ? NA NA NA NA ?
SystemTextJsonDeserialize .NET 9.0 32.82 μs 0.627 μs 0.697 μs 2.56 0.06 0.8545 - - 69272 B 5.76
OrleansDeserialize .NET 9.0 23.43 μs 0.275 μs 0.243 μs 1.83 0.03 0.1526 - - 12024 B 1.00
MessagePackDeserialize .NET 10.0 12.52 μs 0.072 μs 0.060 μs 1.00 0.01 0.4730 - - 12024 B 1.00
ProtobufNetDeserialize .NET 10.0 NA NA NA ? ? NA NA NA NA ?
SystemTextJsonDeserialize .NET 10.0 28.50 μs 0.228 μs 0.213 μs 2.28 0.02 0.8850 - - 69272 B 5.76
OrleansDeserialize .NET 10.0 10.80 μs 0.091 μs 0.085 μs 0.86 0.01 0.1984 0.0153 0.0153 - 0.00

ArraySerializeBenchmark

Method Runtime Mean Error StdDev Ratio RatioSD Gen0 Gen1 Gen2 Allocated Alloc Ratio
MessagePackSerialize .NET 8.0 9.984 μs 0.0673 μs 0.0597 μs 1.00 0.01 0.0153 - - 16032 B 1.00
ProtobufNetSerialize .NET 8.0 21.811 μs 0.1778 μs 0.1663 μs 2.18 0.02 - - - 17024 B 1.06
SystemTextJsonSerialize .NET 8.0 35.691 μs 0.4460 μs 0.3725 μs 3.57 0.04 0.0610 - - 49336 B 3.08
OrleansSerialize .NET 8.0 8.592 μs 0.0516 μs 0.0483 μs 0.86 0.01 0.0153 - - 17032 B 1.06
MessagePackSerialize .NET 9.0 10.053 μs 0.0942 μs 0.0835 μs 1.00 0.01 0.1984 - - 16032 B 1.00
ProtobufNetSerialize .NET 9.0 21.914 μs 0.3725 μs 0.3484 μs 2.18 0.04 0.2136 - - 17024 B 1.06
SystemTextJsonSerialize .NET 9.0 21.190 μs 0.2526 μs 0.2363 μs 2.11 0.03 0.6104 - - 49336 B 3.08
OrleansSerialize .NET 9.0 8.837 μs 0.0953 μs 0.0796 μs 0.88 0.01 0.2136 - - 17032 B 1.06
MessagePackSerialize .NET 10.0 6.410 μs 0.1614 μs 0.4733 μs 1.01 0.10 0.2441 0.0076 0.0076 - NA
ProtobufNetSerialize .NET 10.0 27.778 μs 0.2486 μs 0.2326 μs 4.36 0.32 0.2136 - - 17024 B NA
SystemTextJsonSerialize .NET 10.0 22.835 μs 0.4506 μs 0.6168 μs 3.58 0.28 0.6104 - - 49336 B NA
OrleansSerialize .NET 10.0 7.942 μs 0.1559 μs 0.1302 μs 1.25 0.09 0.3357 0.0153 0.0153 - NA
MessagePackBufferWriter .NET 8.0 8.405 μs 0.0515 μs 0.0457 μs 1.00 0.01 - - - - NA
ProtobufNetBufferWriter .NET 8.0 28.587 μs 0.1126 μs 0.1053 μs 3.40 0.02 - - - - NA
SystemTextJsonBufferWriter .NET 8.0 34.107 μs 0.2867 μs 0.2394 μs 4.06 0.03 - - - 32312 B NA
OrleansBufferWriter .NET 8.0 7.140 μs 0.0408 μs 0.0382 μs 0.85 0.01 - - - - NA
OrleansBufferWriter2 .NET 8.0 14.966 μs 0.0816 μs 0.0724 μs 1.78 0.01 - - - - NA
MessagePackBufferWriter .NET 9.0 8.596 μs 0.0389 μs 0.0345 μs 1.00 0.01 - - - - NA
ProtobufNetBufferWriter .NET 9.0 26.238 μs 0.1786 μs 0.1671 μs 3.05 0.02 - - - - NA
SystemTextJsonBufferWriter .NET 9.0 21.589 μs 0.2513 μs 0.2099 μs 2.51 0.03 0.3967 - - 32312 B NA
OrleansBufferWriter .NET 9.0 6.931 μs 0.0405 μs 0.0379 μs 0.81 0.01 - - - - NA
OrleansBufferWriter2 .NET 9.0 8.160 μs 0.0497 μs 0.0465 μs 0.95 0.01 - - - - NA
MessagePackBufferWriter .NET 10.0 4.322 μs 0.0185 μs 0.0164 μs 1.00 0.01 - - - - NA
ProtobufNetBufferWriter .NET 10.0 27.125 μs 0.2138 μs 0.2000 μs 6.28 0.05 - - - - NA
SystemTextJsonBufferWriter .NET 10.0 22.121 μs 0.2434 μs 0.2277 μs 5.12 0.05 0.3967 - - 32312 B NA
OrleansBufferWriter .NET 10.0 6.257 μs 0.0568 μs 0.0504 μs 1.45 0.01 - - - - NA
OrleansBufferWriter2 .NET 10.0 7.442 μs 0.0283 μs 0.0251 μs 1.72 0.01 - - - - NA
OrleansPipeWriter .NET 8.0 16.159 μs 0.0612 μs 0.0543 μs ? ? - - - 480 B ?
OrleansPipeWriter .NET 9.0 8.179 μs 0.0580 μs 0.0514 μs ? ? - - - 480 B ?
OrleansPipeWriter .NET 10.0 7.963 μs 0.1064 μs 0.0943 μs ? ? - - - 480 B ?

ClassDeserializeBenchmark

Method Runtime Mean Error StdDev Ratio RatioSD Gen0 Allocated Alloc Ratio
Orleans .NET 8.0 42.26 ns 0.168 ns 0.149 ns 1.00 0.00 0.0001 56 B 1.00
Utf8Json .NET 8.0 151.55 ns 1.438 ns 1.201 ns 3.59 0.03 - 56 B 1.00
SystemTextJson .NET 8.0 230.32 ns 1.334 ns 1.182 ns 5.45 0.03 - 56 B 1.00
MessagePackCSharp .NET 8.0 47.71 ns 0.250 ns 0.209 ns 1.13 0.01 0.0001 56 B 1.00
ProtobufNet .NET 8.0 41.91 ns 0.249 ns 0.221 ns 0.99 0.01 0.0001 56 B 1.00
GoogleProtobuf .NET 8.0 44.54 ns 0.453 ns 0.423 ns 1.05 0.01 0.0001 64 B 1.14
Hyperion .NET 8.0 72.97 ns 0.432 ns 0.404 ns 1.73 0.01 - 56 B 1.00
NewtonsoftJson .NET 8.0 845.59 ns 4.649 ns 4.122 ns 20.01 0.12 0.0038 2856 B 51.00
SpanJson .NET 8.0 107.45 ns 0.570 ns 0.533 ns 2.54 0.01 - 56 B 1.00
Orleans .NET 9.0 39.47 ns 0.180 ns 0.168 ns 1.00 0.01 0.0007 56 B 1.00
Utf8Json .NET 9.0 141.67 ns 0.775 ns 0.647 ns 3.59 0.02 0.0007 56 B 1.00
SystemTextJson .NET 9.0 210.64 ns 0.832 ns 0.778 ns 5.34 0.03 0.0007 56 B 1.00
MessagePackCSharp .NET 9.0 43.67 ns 0.226 ns 0.211 ns 1.11 0.01 0.0007 56 B 1.00
ProtobufNet .NET 9.0 36.78 ns 0.192 ns 0.180 ns 0.93 0.01 0.0007 56 B 1.00
GoogleProtobuf .NET 9.0 43.40 ns 0.180 ns 0.169 ns 1.10 0.01 0.0008 64 B 1.14
Hyperion .NET 9.0 62.70 ns 0.409 ns 0.382 ns 1.59 0.01 0.0007 56 B 1.00
NewtonsoftJson .NET 9.0 830.27 ns 8.335 ns 7.797 ns 21.03 0.21 0.0372 2856 B 51.00
SpanJson .NET 9.0 124.62 ns 0.908 ns 0.849 ns 3.16 0.02 0.0007 56 B 1.00
Orleans .NET 10.0 35.93 ns 0.142 ns 0.133 ns 1.00 0.01 0.0007 56 B 1.00
Utf8Json .NET 10.0 126.69 ns 0.818 ns 0.726 ns 3.53 0.02 0.0007 56 B 1.00
SystemTextJson .NET 10.0 206.57 ns 1.344 ns 1.192 ns 5.75 0.04 0.0007 56 B 1.00
MessagePackCSharp .NET 10.0 34.35 ns 0.205 ns 0.191 ns 0.96 0.01 0.0007 56 B 1.00
ProtobufNet .NET 10.0 30.69 ns 0.137 ns 0.129 ns 0.85 0.00 0.0007 56 B 1.00
GoogleProtobuf .NET 10.0 30.40 ns 0.195 ns 0.183 ns 0.85 0.01 0.0008 64 B 1.14
Hyperion .NET 10.0 59.41 ns 0.280 ns 0.262 ns 1.65 0.01 0.0007 56 B 1.00
NewtonsoftJson .NET 10.0 759.59 ns 1.697 ns 1.504 ns 21.14 0.09 0.0372 2856 B 51.00
SpanJson .NET 10.0 113.26 ns 0.824 ns 0.771 ns 3.15 0.02 0.0007 56 B 1.00

ClassSerializeBenchmark

Method Runtime Mean Error StdDev Ratio RatioSD Gen0 Payload Allocated Alloc Ratio
Orleans .NET 8.0 25.73 ns 0.105 ns 0.093 ns 1.00 0.00 - 20 B - NA
Utf8Json .NET 8.0 55.44 ns 0.544 ns 0.508 ns 2.15 0.02 - 154 B - NA
SystemTextJson .NET 8.0 166.71 ns 0.838 ns 0.743 ns 6.48 0.04 - 154 B - NA
MessagePackCSharp .NET 8.0 39.98 ns 0.092 ns 0.077 ns 1.55 0.01 - 10 B 40 B NA
ProtobufNet .NET 8.0 87.10 ns 0.343 ns 0.321 ns 3.38 0.02 - 18 B - NA
GoogleProtobuf .NET 8.0 12.54 ns 0.057 ns 0.053 ns 0.49 0.00 - 18 B - NA
Hyperion .NET 8.0 45.20 ns 0.222 ns 0.207 ns 1.76 0.01 - 39 B - NA
NewtonsoftJson .NET 8.0 426.97 ns 2.617 ns 2.320 ns 16.59 0.10 0.0024 154 B 2024 B NA
SpanJson .NET 8.0 72.08 ns 0.606 ns 0.537 ns 2.80 0.02 0.0002 154 B 184 B NA
Orleans .NET 9.0 24.22 ns 0.236 ns 0.197 ns 1.00 0.01 - 20 B - NA
Utf8Json .NET 9.0 52.10 ns 0.338 ns 0.316 ns 2.15 0.02 - 154 B - NA
SystemTextJson .NET 9.0 85.84 ns 0.411 ns 0.385 ns 3.55 0.03 - 154 B - NA
MessagePackCSharp .NET 9.0 31.50 ns 0.151 ns 0.141 ns 1.30 0.01 0.0005 10 B 40 B NA
ProtobufNet .NET 9.0 NA NA NA ? ? NA 18 B NA ?
GoogleProtobuf .NET 9.0 15.00 ns 0.085 ns 0.080 ns 0.62 0.01 - 18 B - NA
Hyperion .NET 9.0 43.08 ns 0.261 ns 0.244 ns 1.78 0.02 - 39 B - NA
NewtonsoftJson .NET 9.0 466.74 ns 5.379 ns 4.492 ns 19.27 0.23 0.0262 154 B 2024 B NA
SpanJson .NET 9.0 64.06 ns 0.448 ns 0.374 ns 2.65 0.03 0.0024 154 B 184 B NA
Orleans .NET 10.0 22.15 ns 0.368 ns 0.345 ns 1.00 0.02 - 20 B - NA
Utf8Json .NET 10.0 51.91 ns 0.221 ns 0.172 ns 2.34 0.04 - 154 B - NA
SystemTextJson .NET 10.0 88.56 ns 0.548 ns 0.428 ns 4.00 0.06 - 154 B - NA
MessagePackCSharp .NET 10.0 27.46 ns 0.139 ns 0.123 ns 1.24 0.02 0.0005 10 B 40 B NA
ProtobufNet .NET 10.0 65.51 ns 0.415 ns 0.368 ns 2.96 0.05 - 18 B - NA
GoogleProtobuf .NET 10.0 10.86 ns 0.142 ns 0.133 ns 0.49 0.01 - 18 B - NA
Hyperion .NET 10.0 41.70 ns 0.592 ns 0.554 ns 1.88 0.04 - 39 B - NA
NewtonsoftJson .NET 10.0 404.28 ns 2.271 ns 1.896 ns 18.25 0.29 0.0262 154 B 2032 B NA
SpanJson .NET 10.0 54.19 ns 0.297 ns 0.278 ns 2.45 0.04 0.0024 154 B 184 B NA

StructDeserializeBenchmark

Method Runtime Mean Error StdDev Ratio RatioSD Gen0 Allocated Alloc Ratio
Orleans .NET 8.0 28.03 ns 0.120 ns 0.106 ns 1.00 0.01 - - NA
Utf8Json .NET 8.0 146.09 ns 1.147 ns 1.073 ns 5.21 0.04 - - NA
SystemTextJson .NET 8.0 228.73 ns 1.634 ns 1.529 ns 8.16 0.06 - 56 B NA
MessagePackCSharp .NET 8.0 46.24 ns 0.142 ns 0.133 ns 1.65 0.01 - - NA
ProtobufNet .NET 8.0 92.59 ns 1.015 ns 0.949 ns 3.30 0.03 - - NA
Hyperion .NET 8.0 62.63 ns 0.312 ns 0.276 ns 2.23 0.01 - 56 B NA
NewtonsoftJson .NET 8.0 841.42 ns 9.587 ns 8.006 ns 30.02 0.30 0.0038 2856 B NA
SpanJson .NET 8.0 98.91 ns 0.415 ns 0.367 ns 3.53 0.02 - - NA
Orleans .NET 9.0 24.12 ns 0.182 ns 0.161 ns 1.00 0.01 - - NA
Utf8Json .NET 9.0 139.27 ns 0.937 ns 0.877 ns 5.77 0.05 - - NA
SystemTextJson .NET 9.0 212.84 ns 1.047 ns 0.980 ns 8.82 0.07 0.0007 56 B NA
MessagePackCSharp .NET 9.0 39.10 ns 0.215 ns 0.191 ns 1.62 0.01 - - NA
ProtobufNet .NET 9.0 NA NA NA ? ? NA NA ?
Hyperion .NET 9.0 62.90 ns 0.269 ns 0.252 ns 2.61 0.02 0.0007 56 B NA
NewtonsoftJson .NET 9.0 829.28 ns 10.986 ns 9.739 ns 34.38 0.45 0.0372 2856 B NA
SpanJson .NET 9.0 149.77 ns 1.186 ns 1.052 ns 6.21 0.06 - - NA
Orleans .NET 10.0 22.93 ns 0.132 ns 0.123 ns 1.00 0.01 - - NA
Utf8Json .NET 10.0 122.43 ns 1.033 ns 0.966 ns 5.34 0.05 - - NA
SystemTextJson .NET 10.0 205.12 ns 0.818 ns 0.765 ns 8.95 0.06 0.0007 56 B NA
MessagePackCSharp .NET 10.0 35.99 ns 0.143 ns 0.134 ns 1.57 0.01 - - NA
ProtobufNet .NET 10.0 78.08 ns 0.600 ns 0.561 ns 3.41 0.03 - - NA
Hyperion .NET 10.0 63.28 ns 0.453 ns 0.424 ns 2.76 0.02 0.0007 56 B NA
NewtonsoftJson .NET 10.0 736.21 ns 7.357 ns 6.522 ns 32.11 0.32 0.0372 2856 B NA
SpanJson .NET 10.0 109.62 ns 0.534 ns 0.500 ns 4.78 0.03 - - NA

StructSerializeBenchmark

Method Runtime Mean Error StdDev Ratio RatioSD Gen0 Payload Allocated Alloc Ratio
Orleans .NET 8.0 23.22 ns 0.141 ns 0.118 ns 1.00 0.01 - 20 B - NA
Utf8Json .NET 8.0 49.04 ns 0.554 ns 0.518 ns 2.11 0.02 - 154 B - NA
SystemTextJson .NET 8.0 182.53 ns 0.877 ns 0.777 ns 7.86 0.05 - 154 B 56 B NA
MessagePackCSharp .NET 8.0 37.68 ns 0.324 ns 0.288 ns 1.62 0.01 - 10 B 40 B NA
ProtobufNet .NET 8.0 73.40 ns 0.357 ns 0.334 ns 3.16 0.02 - 18 B - NA
Hyperion .NET 8.0 50.54 ns 0.306 ns 0.286 ns 2.18 0.02 0.0001 39 B 56 B NA
NewtonsoftJson .NET 8.0 438.70 ns 2.349 ns 2.082 ns 18.89 0.13 0.0024 154 B 2080 B NA
SpanJson .NET 8.0 63.49 ns 0.652 ns 0.610 ns 2.73 0.03 0.0002 154 B 184 B NA
Orleans .NET 9.0 22.53 ns 0.149 ns 0.132 ns 1.00 0.01 - 20 B - NA
Utf8Json .NET 9.0 47.85 ns 0.186 ns 0.174 ns 2.12 0.01 - 154 B - NA
SystemTextJson .NET 9.0 105.63 ns 0.381 ns 0.338 ns 4.69 0.03 0.0007 154 B 56 B NA
MessagePackCSharp .NET 9.0 30.40 ns 0.168 ns 0.149 ns 1.35 0.01 0.0005 10 B 40 B NA
ProtobufNet .NET 9.0 61.09 ns 0.445 ns 0.371 ns 2.71 0.02 - 18 B - NA
Hyperion .NET 9.0 57.61 ns 0.322 ns 0.302 ns 2.56 0.02 0.0007 39 B 56 B NA
NewtonsoftJson .NET 9.0 486.81 ns 6.515 ns 6.094 ns 21.61 0.29 0.0267 154 B 2080 B NA
SpanJson .NET 9.0 58.94 ns 0.277 ns 0.217 ns 2.62 0.02 0.0024 154 B 184 B NA
Orleans .NET 10.0 19.44 ns 0.110 ns 0.097 ns 1.00 0.01 - 20 B - NA
Utf8Json .NET 10.0 52.27 ns 0.243 ns 0.215 ns 2.69 0.02 - 154 B - NA
SystemTextJson .NET 10.0 124.64 ns 1.279 ns 1.133 ns 6.41 0.06 0.0007 154 B 56 B NA
MessagePackCSharp .NET 10.0 28.59 ns 0.062 ns 0.055 ns 1.47 0.01 0.0005 10 B 40 B NA
ProtobufNet .NET 10.0 58.15 ns 0.648 ns 0.606 ns 2.99 0.03 - 18 B - NA
Hyperion .NET 10.0 48.20 ns 0.305 ns 0.285 ns 2.48 0.02 0.0007 39 B 56 B NA
NewtonsoftJson .NET 10.0 428.32 ns 2.774 ns 2.459 ns 22.03 0.16 0.0272 154 B 2088 B NA
SpanJson .NET 10.0 59.05 ns 0.758 ns 0.709 ns 3.04 0.04 0.0024 154 B 184 B NA
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment