0.9.0
0.9.0 - Reliable Benchmark & Remote Benchmarks 🔗
- Add benchmark PingPongReliable for using reliable transmission (if supported by the library)
- Add support for indefinite duration by using a negative duration value
- Add execution-mode config to support remote benchmarking by splitting the server and client
- Improve error handling
- Code and folder refactoring - the naming and folder structure are final now
Changes
- Change benchmark naming: Performance 1 -> PingPongUnreliable
- Change benchmark naming: Performance 2 -> PingPongBatchedUnreliable
Ubuntu 20.04
To reproduce the benchmarks, run ./NetworkBenchmarkDotNet -b Essential
.
Hardware Details
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-YNISTP : .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=10 LaunchCount=1 UnrollFactor=1
WarmupCount=1 Version=0.9.0 OS=Linux 5.8.0-43-generic #49~20.04.1-Ubuntu SMP Fri Feb 5 09:57:56 UTC 2021
DateTime=02/18/2021 16:18:27
Method | Library | Transmission | Clients | Throughput | Mean | Error | StdDev |
---|---|---|---|---|---|---|---|
PingPongReliable | ENet | Reliable | 500 | 90,333 msg/s | 5.535 s | 0.0311 s | 0.0205 s |
PingPongUnreliable | ENet | Unreliable | 500 | 185,112 msg/s | 2,701.1 ms | 21.57 ms | 12.83 ms |
PingPongBatchedUnreliable | ENet | Unreliable | 500 | 1,129,598 msg/s | 442.6 ms | 4.83 ms | 2.87 ms |
PingPongUnreliable | NetCoreServer | Unreliable | 500 | 96,514 msg/s | 5,180.6 ms | 64.21 ms | 42.47 ms |
PingPongBatchedUnreliable | NetCoreServer | Unreliable | 500 | 97,245 msg/s | 5,141.6 ms | 55.11 ms | 36.45 ms |
PingPongReliable | LiteNetLib | Reliable | 500 | 82,804 msg/s | 6.038 s | 0.0671 s | 0.0444 s |
PingPongUnreliable | LiteNetLib | Unreliable | 500 | 91,222 msg/s | 5,481.2 ms | 51.56 ms | 34.11 ms |
PingPongBatchedUnreliable | LiteNetLib | Unreliable | 500 | 251,421 msg/s | 1,988.7 ms | 56.09 ms | 33.38 ms |
Windows 10
To reproduce the benchmarks, run ./NetworkBenchmarkDotNet -b Essential
.
Hardware Details (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.103
[Host] : .NET Core 5.0.3 (CoreCLR 5.0.321.7212, CoreFX 5.0.321.7212), X64 RyuJIT
Job-ODIPRB : .NET Core 5.0.3 (CoreCLR 5.0.321.7212, CoreFX 5.0.321.7212), X64 RyuJIT
Platform=X64 Runtime=.NET Core 5.0 Concurrent=True
Force=True Server=True InvocationCount=1
IterationCount=10 LaunchCount=1 UnrollFactor=1
WarmupCount=1 Version=0.9.0 OS=Microsoft Windows 10.0.19042
DateTime=02/18/2021 16:18:02
Method | Library | Transmission | Clients | Throughput | Mean | Error | StdDev |
---|---|---|---|---|---|---|---|
PingPongReliable | ENet | Reliable | 500 | 51,718 msg/s | 9.668 s | 0.1468 s | 0.0768 s |
PingPongUnreliable | ENet | Unreliable | 500 | 93,960 msg/s | 5,321.4 ms | 1,040.97 ms | 688.54 ms |
PingPongBatchedUnreliable | ENet | Unreliable | 500 | 687,775 msg/s | 727.0 ms | 84.13 ms | 55.65 ms |
PingPongUnreliable | NetCoreServer | Unreliable | 500 | 72,975 msg/s | 6,851.6 ms | 41.01 ms | 27.12 ms |
PingPongBatchedUnreliable | NetCoreServer | Unreliable | 500 | 78,644 msg/s | 6,357.8 ms | 42.78 ms | 25.46 ms |
PingPongReliable | LiteNetLib | Reliable | 500 | 88,463 msg/s | 5.652 s | 0.0231 s | 0.0138 s |
PingPongUnreliable | LiteNetLib | Unreliable | 500 | 90,985 msg/s | 5,495.4 ms | 30.93 ms | 20.46 ms |
PingPongBatchedUnreliable | LiteNetLib | Unreliable | 500 | 771,852 msg/s | 647.8 ms | 13.48 ms | 8.92 ms |