Based on https://github.com/to11mtm/akka.net/commit/6f888244bde7f8a63e292c9d1a734000917346e6
✨ Battle Royale complete! Printing markdown table to stdout~ nyaa~
Generated by
RemotePingPong battle. Repeat count per client:50,000messages.
| 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 |
| 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 |