0.8.0
0.8.0 - .NET 5 and KCP 👨🔬
- Change benchmarks to use .NET 5 (Everything is still .NET 3.1 Core compatible)
- Add a benchmark for Kcp2k, since this library will probably get more relevant in the future and is UDP based - Note that the results of KCP will probably increase with some tweaks.
- Change performance benchmarks to use 500 Clients and instead have 20 iterations
- Change from .NET Core 3.1.10 to 3.1.22, last release in master branch with .NET Core 3.x
- Include windows results again. Since the last Windows update, the benchmarks run a lot faster than before (even though they are still hardly comparable to Linux) and are worth noting to give a feeling of how the different libraries compare on different operating systems.
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-ZWOJJS : .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.0 OS=Linux 5.8.0-41-generic #46~20.04.1-Ubuntu SMP Mon Jan 18 17:52:23 UTC 2021
DateTime=02/15/2021 18:08:30
Method | Library | Clients | Throughput | Mean | Error | StdDev |
---|---|---|---|---|---|---|
Performance1 | ENet | 500 | 185,261 msg/s | 2,698.9 ms | 14.11 ms | 16.25 ms |
Performance2 | ENet | 500 | 1,137,405 msg/s | 439.6 ms | 3.69 ms | 4.25 ms |
Performance1 | NetCoreServer | 500 | 106,107 msg/s | 4,712.2 ms | 24.73 ms | 27.48 ms |
Performance2 | NetCoreServer | 500 | 108,097 msg/s | 4,625.5 ms | 15.29 ms | 17.61 ms |
Performance1 | LiteNetLib | 500 | 81,420 msg/s | 6,141.0 ms | 51.56 ms | 59.38 ms |
Performance2 | LiteNetLib | 500 | 298,159 msg/s | 1,677.0 ms | 15.40 ms | 17.11 ms |
Performance1 | Kcp2k | 500 | 47,227 msg/s | 10,587.1 ms | 3,304.33 ms | 3,672.76 ms |
Performance2 | Kcp2k | 500 | 50,075 msg/s | 9,985.0 ms | 2,525.07 ms | 2,806.61 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-VQNPIH : .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.0 OS=Microsoft Windows 10.0.19042
DateTime=02/15/2021 18:06:38
Method | Library | Clients | Throughput | Mean | Error | StdDev | Median |
---|---|---|---|---|---|---|---|
Performance1 | ENet | 500 | 101,278 msg/s | 4,936.9 ms | 374.38 ms | 431.14 ms | 5,014.2 ms |
Performance2 | ENet | 500 | 710,820 msg/s | 703.4 ms | 39.89 ms | 45.94 ms | 689.7 ms |
Performance1 | NetCoreServer | 500 | 66,635 msg/s | 7,503.6 ms | 730.83 ms | 841.63 ms | 6,947.8 ms |
Performance2 | NetCoreServer | 500 | 68,048 msg/s | 7,347.8 ms | 17.61 ms | 16.47 ms | 7,349.3 ms |
Performance1 | LiteNetLib | 500 | 89,309 msg/s | 5,598.5 ms | 37.54 ms | 43.24 ms | 5,594.9 ms |
Performance2 | LiteNetLib | 500 | 786,067 msg/s | 636.1 ms | 7.30 ms | 8.41 ms | 639.5 ms |
Performance1 | Kcp2k | 500 | 37,012 msg/s | 13,509.2 ms | 529.46 ms | 609.73 ms | 13,901.7 ms |
Performance2 | Kcp2k | 500 | 117,231 msg/s | 4,265.1 ms | 46.64 ms | 53.71 ms | 4,264.8 ms |