0.8.2
0.8.2 - Reliable Messages & Quick Benchmarks 🏃♂️
- Add Transmission option for testing reliable messages
- Change InDepth benchmark to Quick benchmark. Runs with a lot less overhead and is a nice intermediate between Custom Benchmarks and the Essential benchmarks. Helps to get a grip for a Library fast with more reliable numbers than you get with a custom benchmark
- Refactor: Use local variables for the benchmark running and listening loops
- Refactor: Add
AClient
,AServer
andANetworkBenchmark
for merging common functionality and avoid copy paste mistakes - ENet: Use unsequenced PacketFlag and Unthrottled for unreliable UDP
- Accessibility: Make
win-benchmark.bat
easier to use and add documentation
Ubuntu 20.04
To reproduce the benchmarks, run ./NetworkBenchmarkDotNet -b Essential
.
Detailed Benchmark Hardware
BenchmarkDotNet=v0.12.1, OS=ubuntu 20.04
Intel Core i5-3570K CPU 3.40GHz (Ivy Bridge), 1 CPU, 4 logical and 4 physical cores
.NET Core SDK=5.0.103
[Host] : .NET Core 5.0.3 (CoreCLR 5.0.321.7203, CoreFX 5.0.321.7203), X64 RyuJIT
Job-CAYZXA : .NET Core 5.0.3 (CoreCLR 5.0.321.7203, CoreFX 5.0.321.7203), X64 RyuJIT
Platform=X64 Runtime=.NET Core 5.0 Concurrent=True
Force=True Server=True InvocationCount=1
IterationCount=20 LaunchCount=1 UnrollFactor=1
WarmupCount=1 Version=0.8.2 OS=Linux 5.8.0-43-generic #49~20.04.1-Ubuntu SMP Fri Feb 5 09:57:56 UTC 2021
DateTime=02/17/2021 16:22:28
Method | Library | Clients | Throughput | Mean | Error | StdDev |
---|---|---|---|---|---|---|
Performance1 | ENet | 500 | 184,330 msg/s | 2,712.5 ms | 13.29 ms | 14.77 ms |
Performance2 | ENet | 500 | 1,127,749 msg/s | 443.4 ms | 1.91 ms | 1.96 ms |
Performance1 | NetCoreServer | 500 | 110,626 msg/s | 4,519.7 ms | 20.66 ms | 21.21 ms |
Performance2 | NetCoreServer | 500 | 95,698 msg/s | 5,224.8 ms | 15.82 ms | 16.93 ms |
Performance1 | LiteNetLib | 500 | 93,768 msg/s | 5,332.3 ms | 22.10 ms | 24.57 ms |
Performance2 | LiteNetLib | 500 | 259,604 msg/s | 1,926.0 ms | 35.52 ms | 40.90 ms |
Performance1 | Kcp2k | 500 | 24,551 msg/s | 20,365.5 ms | 290.54 ms | 334.59 ms |
Performance2 | Kcp2k | 500 | 124,884 msg/s | 4,003.7 ms | 133.17 ms | 153.36 ms |
Windows 10
To reproduce the benchmarks, run ./NetworkBenchmarkDotNet -b Essential
.
Detailed Benchmark Hardware (Note that this machine has a lot more performance than the linux machine)
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19042
AMD Ryzen 7 3700X, 1 CPU, 16 logical and 8 physical cores
.NET Core SDK=5.0.100
[Host] : .NET Core 5.0.0 (CoreCLR 5.0.20.51904, CoreFX 5.0.20.51904), X64 RyuJIT
Job-KWKBOV : .NET Core 5.0.0 (CoreCLR 5.0.20.51904, CoreFX 5.0.20.51904), X64 RyuJIT
Platform=X64 Runtime=.NET Core 5.0 Concurrent=True
Force=True Server=True InvocationCount=1
IterationCount=20 LaunchCount=1 UnrollFactor=1
WarmupCount=1 Version=0.8.2 OS=Microsoft Windows 10.0.19042
DateTime=02/17/2021 16:23:23
Method | Library | Clients | Throughput | Mean | Error | StdDev |
---|---|---|---|---|---|---|
Performance1 | ENet | 500 | 103,408 msg/s | 4,835.2 ms | 273.39 ms | 314.84 ms |
Performance2 | ENet | 500 | 713,546 msg/s | 700.7 ms | 40.59 ms | 46.75 ms |
Performance1 | NetCoreServer | 500 | 72,938 msg/s | 6,855.1 ms | 36.20 ms | 40.24 ms |
Performance2 | NetCoreServer | 500 | 70,188 msg/s | 7,123.8 ms | 11.23 ms | 12.02 ms |
Performance1 | LiteNetLib | 500 | 101,078 msg/s | 4,946.7 ms | 27.74 ms | 28.48 ms |
Performance2 | LiteNetLib | 500 | 874,633 msg/s | 571.7 ms | 8.18 ms | 9.42 ms |
Performance1 | Kcp2k | 500 | 15,536 msg/s | 32,183.3 ms | 484.33 ms | 538.33 ms |
Performance2 | Kcp2k | 500 | 67,639 msg/s | 7,392.2 ms | 231.14 ms | 266.18 ms |
Ubuntu 20.04 Live USB stick
To reproduce the benchmarks, run ./NetworkBenchmarkDotNet -b Essential
.
Detailed Benchmark Hardware This is the windows machine as a little bonus test. Not sure how reliable a USB-Stick booted test is in the end.
BenchmarkDotNet=v0.12.1, OS=ubuntu 20.04
AMD Ryzen 7 3700X, 1 CPU, 16 logical and 8 physical cores
.NET Core SDK=5.0.103
[Host] : .NET Core 5.0.3 (CoreCLR 5.0.321.7203, CoreFX 5.0.321.7203), X64 RyuJIT
Job-ZVTATC : .NET Core 5.0.3 (CoreCLR 5.0.321.7203, CoreFX 5.0.321.7203), X64 RyuJIT
Platform=X64 Runtime=.NET Core 5.0 Concurrent=True
Force=True Server=True InvocationCount=1
IterationCount=20 LaunchCount=1 UnrollFactor=1
WarmupCount=1 Version=0.8.2 OS=Linux 5.8.0-43-generic #49~20.04.1-Ubuntu SMP Fri Feb 5 09:57:56 UTC 2021
DateTime=02/17/2021 18:19:23
Method | Library | Clients | Throughput | Mean | Error | StdDev |
---|---|---|---|---|---|---|
Performance1 | ENet | 500 | 288,441 msg/s | 1,733.5 ms | 10.28 ms | 11.84 ms |
Performance2 | ENet | 500 | 1,541,399 msg/s | 324.4 ms | 4.66 ms | 5.36 ms |
Performance1 | NetCoreServer | 500 | 124,652 msg/s | 4,011.2 ms | 15.85 ms | 18.25 ms |
Performance2 | NetCoreServer | 500 | 127,353 msg/s | 3,926.1 ms | 27.53 ms | 31.70 ms |
Performance1 | LiteNetLib | 500 | 218,786 msg/s | 2,285.3 ms | 19.62 ms | 20.99 ms |
Performance2 | LiteNetLib | 500 | 279,585 msg/s | 1,788.4 ms | 47.12 ms | 54.27 ms |
Performance1 | Kcp2k | 500 | 22,340 msg/s | 22,380.9 ms | 38.98 ms | 43.33 ms |
Performance2 | Kcp2k | 500 | 195,655 msg/s | 2,555.5 ms | 63.15 ms | 72.72 ms |