Skip to content

0.8.0

Compare
Choose a tag to compare
@JohannesDeml JohannesDeml released this 15 Feb 18:38
· 97 commits to master since this release
0.8.0
4e3162c

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

Performance Comparison  NET 5 Linux

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

Performance Comparison  NET 5 Windows