Skip to content

Instantly share code, notes, and snippets.

@to11mtm
Created June 20, 2026 21:24
Show Gist options
  • Select an option

  • Save to11mtm/c59f280462ad26ff289630c6c0bafe76 to your computer and use it in GitHub Desktop.

Select an option

Save to11mtm/c59f280462ad26ff289630c6c0bafe76 to your computer and use it in GitHub Desktop.
More measurements.

Based on https://github.com/to11mtm/akka.net/commit/6f888244bde7f8a63e292c9d1a734000917346e6

✨ Battle Royale complete! Printing markdown table to stdout~ nyaa~

RemotePingPong Battle Royale — 2026-06-20 21:19:48 UTC

Generated by RemotePingPong battle. Repeat count per client: 50,000 messages.

Summary — Best Throughput per Combo

Transport Serializer Payload Best Msgs/sec At Clients
Pipe/TCP + Protobuf PrimitiveSerializer Primitive long 1,612,904 10
Akka.Streams TCP + Protobuf PrimitiveSerializer Primitive long 1,305,484 20
Pipe/TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 1,262,627 5
Pipe/TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 1,260,505 30
Akka.Streams TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 1,088,930 30
Pipe/TCP + Protobuf Hyperion Custom object (serializer path) 1,082,252 15
Akka.Streams TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 1,081,783 25
DotNetty/TCP + Protobuf PrimitiveSerializer Primitive long 997,507 20
DotNetty/TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 968,617 25
DotNetty/TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 966,184 20
DotNetty/TCP + Protobuf Hyperion Custom object (serializer path) 911,855 15
Akka.Streams TCP + Protobuf Hyperion Custom object (serializer path) 875,657 25
DotNetty/TCP + Protobuf JSON (default) Custom object (serializer path) 233,373 30
Pipe/TCP + Protobuf JSON (default) Custom object (serializer path) 232,181 20
Akka.Streams TCP + Protobuf JSON (default) Custom object (serializer path) 209,140 20

Detail — All Measurements

Transport Serializer Payload Clients Msgs/sec Total Msgs Time (ms)
DotNetty/TCP + Protobuf PrimitiveSerializer Primitive long 1 167,505 100,000 597.27
DotNetty/TCP + Protobuf PrimitiveSerializer Primitive long 5 263,575 500,000 1897.29
DotNetty/TCP + Protobuf PrimitiveSerializer Primitive long 10 708,216 1,000,000 1412.07
DotNetty/TCP + Protobuf PrimitiveSerializer Primitive long 15 960,308 1,500,000 1562.60
DotNetty/TCP + Protobuf PrimitiveSerializer Primitive long 20 997,507 2,000,000 2005.10
DotNetty/TCP + Protobuf PrimitiveSerializer Primitive long 25 958,957 2,500,000 2607.73
DotNetty/TCP + Protobuf PrimitiveSerializer Primitive long 30 933,707 3,000,000 3213.19
DotNetty/TCP + Protobuf JSON (default) Custom object (serializer path) 1 98,329 100,000 1017.85
DotNetty/TCP + Protobuf JSON (default) Custom object (serializer path) 5 224,216 500,000 2230.28
DotNetty/TCP + Protobuf JSON (default) Custom object (serializer path) 10 228,103 1,000,000 4384.55
DotNetty/TCP + Protobuf JSON (default) Custom object (serializer path) 15 231,840 1,500,000 6470.19
DotNetty/TCP + Protobuf JSON (default) Custom object (serializer path) 20 232,532 2,000,000 8601.55
DotNetty/TCP + Protobuf JSON (default) Custom object (serializer path) 25 232,905 2,500,000 10734.41
DotNetty/TCP + Protobuf JSON (default) Custom object (serializer path) 30 233,373 3,000,000 12855.72
DotNetty/TCP + Protobuf Hyperion Custom object (serializer path) 1 354,610 100,000 282.82
DotNetty/TCP + Protobuf Hyperion Custom object (serializer path) 5 782,473 500,000 639.56
DotNetty/TCP + Protobuf Hyperion Custom object (serializer path) 10 845,309 1,000,000 1183.90
DotNetty/TCP + Protobuf Hyperion Custom object (serializer path) 15 911,855 1,500,000 1645.35
DotNetty/TCP + Protobuf Hyperion Custom object (serializer path) 20 903,751 2,000,000 2213.02
DotNetty/TCP + Protobuf Hyperion Custom object (serializer path) 25 891,584 2,500,000 2804.14
DotNetty/TCP + Protobuf Hyperion Custom object (serializer path) 30 874,126 3,000,000 3432.12
DotNetty/TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 1 367,648 100,000 272.94
DotNetty/TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 5 920,811 500,000 543.49
DotNetty/TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 10 924,215 1,000,000 1082.52
DotNetty/TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 15 932,836 1,500,000 1608.77
DotNetty/TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 20 966,184 2,000,000 2070.77
DotNetty/TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 25 943,041 2,500,000 2651.41
DotNetty/TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 30 942,804 3,000,000 3182.12
DotNetty/TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 1 448,431 100,000 223.88
DotNetty/TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 5 915,751 500,000 546.67
DotNetty/TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 10 935,454 1,000,000 1069.61
DotNetty/TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 15 935,163 1,500,000 1604.19
DotNetty/TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 20 928,075 2,000,000 2155.09
DotNetty/TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 25 968,617 2,500,000 2581.78
DotNetty/TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 30 958,773 3,000,000 3129.62
Akka.Streams TCP + Protobuf PrimitiveSerializer Primitive long 1 591,716 100,000 169.45
Akka.Streams TCP + Protobuf PrimitiveSerializer Primitive long 5 970,874 500,000 515.20
Akka.Streams TCP + Protobuf PrimitiveSerializer Primitive long 10 1,291,990 1,000,000 774.82
Akka.Streams TCP + Protobuf PrimitiveSerializer Primitive long 15 1,179,246 1,500,000 1272.88
Akka.Streams TCP + Protobuf PrimitiveSerializer Primitive long 20 1,305,484 2,000,000 1532.90
Akka.Streams TCP + Protobuf PrimitiveSerializer Primitive long 25 1,284,027 2,500,000 1947.40
Akka.Streams TCP + Protobuf PrimitiveSerializer Primitive long 30 1,295,337 3,000,000 2316.53
Akka.Streams TCP + Protobuf JSON (default) Custom object (serializer path) 1 177,936 100,000 562.46
Akka.Streams TCP + Protobuf JSON (default) Custom object (serializer path) 5 195,237 500,000 2561.52
Akka.Streams TCP + Protobuf JSON (default) Custom object (serializer path) 10 208,856 1,000,000 4788.27
Akka.Streams TCP + Protobuf JSON (default) Custom object (serializer path) 15 208,827 1,500,000 7183.65
Akka.Streams TCP + Protobuf JSON (default) Custom object (serializer path) 20 209,140 2,000,000 9563.26
Akka.Streams TCP + Protobuf JSON (default) Custom object (serializer path) 25 207,935 2,500,000 12023.75
Akka.Streams TCP + Protobuf JSON (default) Custom object (serializer path) 30 208,856 3,000,000 14364.42
Akka.Streams TCP + Protobuf Hyperion Custom object (serializer path) 1 495,050 100,000 202.19
Akka.Streams TCP + Protobuf Hyperion Custom object (serializer path) 5 811,689 500,000 616.90
Akka.Streams TCP + Protobuf Hyperion Custom object (serializer path) 10 831,947 1,000,000 1202.61
Akka.Streams TCP + Protobuf Hyperion Custom object (serializer path) 15 857,143 1,500,000 1750.38
Akka.Streams TCP + Protobuf Hyperion Custom object (serializer path) 20 821,019 2,000,000 2436.93
Akka.Streams TCP + Protobuf Hyperion Custom object (serializer path) 25 875,657 2,500,000 2855.27
Akka.Streams TCP + Protobuf Hyperion Custom object (serializer path) 30 865,801 3,000,000 3465.87
Akka.Streams TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 1 671,141 100,000 149.23
Akka.Streams TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 5 1,075,269 500,000 465.73
Akka.Streams TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 10 1,069,519 1,000,000 935.58
Akka.Streams TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 15 1,074,499 1,500,000 1396.13
Akka.Streams TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 20 1,055,967 2,000,000 1894.59
Akka.Streams TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 25 1,081,783 2,500,000 2311.99
Akka.Streams TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 30 1,074,114 3,000,000 2793.67
Akka.Streams TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 1 671,141 100,000 149.06
Akka.Streams TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 5 1,054,853 500,000 474.17
Akka.Streams TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 10 1,061,572 1,000,000 942.56
Akka.Streams TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 15 1,020,409 1,500,000 1470.23
Akka.Streams TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 20 1,040,042 2,000,000 1923.85
Akka.Streams TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 25 1,085,541 2,500,000 2303.69
Akka.Streams TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 30 1,088,930 3,000,000 2755.01
Pipe/TCP + Protobuf PrimitiveSerializer Primitive long 1 854,701 100,000 117.20
Pipe/TCP + Protobuf PrimitiveSerializer Primitive long 5 1,449,276 500,000 345.38
Pipe/TCP + Protobuf PrimitiveSerializer Primitive long 10 1,612,904 1,000,000 620.09
Pipe/TCP + Protobuf PrimitiveSerializer Primitive long 15 1,583,950 1,500,000 947.61
Pipe/TCP + Protobuf PrimitiveSerializer Primitive long 20 1,577,288 2,000,000 1268.40
Pipe/TCP + Protobuf PrimitiveSerializer Primitive long 25 1,573,317 2,500,000 1589.25
Pipe/TCP + Protobuf PrimitiveSerializer Primitive long 30 1,499,251 3,000,000 2001.20
Pipe/TCP + Protobuf JSON (default) Custom object (serializer path) 1 212,766 100,000 470.91
Pipe/TCP + Protobuf JSON (default) Custom object (serializer path) 5 221,435 500,000 2258.10
Pipe/TCP + Protobuf JSON (default) Custom object (serializer path) 10 227,739 1,000,000 4391.91
Pipe/TCP + Protobuf JSON (default) Custom object (serializer path) 15 231,268 1,500,000 6486.43
Pipe/TCP + Protobuf JSON (default) Custom object (serializer path) 20 232,181 2,000,000 8614.36
Pipe/TCP + Protobuf JSON (default) Custom object (serializer path) 25 230,415 2,500,000 10850.54
Pipe/TCP + Protobuf JSON (default) Custom object (serializer path) 30 231,143 3,000,000 12979.25
Pipe/TCP + Protobuf Hyperion Custom object (serializer path) 1 598,803 100,000 167.97
Pipe/TCP + Protobuf Hyperion Custom object (serializer path) 5 996,016 500,000 502.94
Pipe/TCP + Protobuf Hyperion Custom object (serializer path) 10 1,066,099 1,000,000 938.78
Pipe/TCP + Protobuf Hyperion Custom object (serializer path) 15 1,082,252 1,500,000 1386.48
Pipe/TCP + Protobuf Hyperion Custom object (serializer path) 20 1,069,519 2,000,000 1870.67
Pipe/TCP + Protobuf Hyperion Custom object (serializer path) 25 1,060,671 2,500,000 2357.09
Pipe/TCP + Protobuf Hyperion Custom object (serializer path) 30 1,042,029 3,000,000 2879.86
Pipe/TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 1 826,447 100,000 121.11
Pipe/TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 5 1,262,627 500,000 396.37
Pipe/TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 10 1,261,035 1,000,000 793.16
Pipe/TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 15 1,176,471 1,500,000 1275.91
Pipe/TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 20 1,233,807 2,000,000 1621.09
Pipe/TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 25 1,241,311 2,500,000 2014.42
Pipe/TCP + Protobuf MessagePack (typeless) Custom object (serializer path) 30 1,250,000 3,000,000 2400.77
Pipe/TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 1 840,337 100,000 119.34
Pipe/TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 5 1,250,000 500,000 400.33
Pipe/TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 10 1,201,924 1,000,000 832.71
Pipe/TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 15 1,238,646 1,500,000 1211.33
Pipe/TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 20 1,252,349 2,000,000 1597.59
Pipe/TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 25 1,171,509 2,500,000 2134.10
Pipe/TCP + Protobuf MessagePack V2 (buffer-first) Custom object (serializer path) 30 1,260,505 3,000,000 2380.66
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment