Skip to content

Releases: JohannesDeml/NetworkBenchmarkDotNet

1.1.0

06 Apr 21:02
8b4fa05
Compare
Choose a tag to compare

1.1.0 - .NET 6

  • Update networking libraries
  • Update Operating Systems
  • Update .NET to 6.013 on Ubuntu and 6.0.15 on Windows

Changes

  • Upgrade NetCoreServer to v6.7.0
  • Upgrade LietNetLib to 1.0.1
  • Upgrade KCP to 1.34
  • Upgrade BenchmarkDotNet to 0.13.5

Results

nbn-overview-1 1 0

Hardware

  • Ubuntu VPS

    • Virtual private server with dedicated CPU's running - Hardware
    • Ubuntu 22.04.2 LTS x86-64 Kernel 5.15.0-48-generic
  • Ubuntu Desktop / Windows Desktop

    • Desktop PC from 2020 - Hardware
    • Windows 11 Pro x86-64 Build 22621,1485 (22H2)
    • Ubuntu 22.04.2 LTS x86-64 Kernel 5.19.0-38-generic

Software

1.0.1

17 Oct 15:22
7c7740b
Compare
Choose a tag to compare

1.0.1 - Update to the latest version 📊

  • Update all libraries that have updates
  • Update Operating Systems
  • Update .NET to 5.0.11

Changes

  • Upgrade NetCoreServer to v5.1.0
  • Upgrade LietNetLib to 0.9.5.2
  • Upgrade KCP to 1.12
  • Upgrade BenchmarkDotNet to 0.13.1
  • Use parameter sorting for columns and replace client colum with attribute generation

Results

nbn-overview-1 0 1

Hardware

  • Ubuntu VPS

    • Virtual private server with dedicated CPU's running - Hardware
    • Ubuntu 20.04.3 LTS x86-64 Kernel 5.14.0-051400-generic
  • Ubuntu Desktop / Windows Desktop

    • Desktop PC from 2020 - Hardware
    • Windows 10 Pro x86-64 Build 19043.1266 (21H1/May2021Update)
    • Ubuntu 20.04.3 LTS x86-64 Kernel 5.11.0-37-generic

Software

1.0.0

05 May 16:20
579cf23
Compare
Choose a tag to compare

1.0.0 - Hardware, Charts, .NET 5 📊

  • Add Manual mode to test libraries (e.g. for packet sniffing to get an idea how the libraries act in different scenarios)
  • Add snapshot of process list after the benchmarks are run - helps with reproducability
  • Run benchmark with three setups, those will be kept for the future, see more at Setups
  • Run benchmarks with a clear procedure
  • Generate charts for the results to make the results better readable

Changes

  • Remove .NET Core 3.1 compatibility, .NET 5 is the only target now
  • Change garbage to sampling benchmark, since it gives more information than just garbage
  • Change use pinned object heap (POH) were applicable
  • Upgrade ENet to v.2.4.7
  • Upgrade NetCoreServer to v5.0.15

Hardware Setups

One VPS as a indie server setup, and a desktop PC with windows and Ubuntu to compare OSes with the same used hardware.

  • Ubuntu VPS

    • Virtual private server with dedicated CPU's running - Hardware
    • Ubuntu 20.04.2 LTS x86-64 Kernel 5.4.0-72-generic
  • Ubuntu Desktop / Windows Desktop

    • Desktop PC from 2020 - Hardware
    • Windows 10 Pro 20H2 x86-64 Build 19042.844
    • Ubuntu 20.04.2 LTS x86-64 Kernel 5.8.0-50-generic

Results

nbn-overview-1 0 0

0.9.0

19 Feb 11:21
ee81961
Compare
Choose a tag to compare

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

Results-Ubuntu20 04 1- NETCore5 0

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

Results-Windows10- NETCore5 0

0.8.2

17 Feb 16:13
94182b6
Compare
Choose a tag to compare

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 and ANetworkBenchmark 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

PerformanceLinux

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

PerformanceWindows

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

0.8.1

16 Feb 11:32
643c68f
Compare
Choose a tag to compare

0.8.1 - Big Cleanup 🧹

  • Refactor code to make it more maintainable
  • Merge duplicated code to static utility methods
  • Update ENet-CSharp to 2.4.6

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-IJBNLS : .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.1  OS=Linux 5.8.0-41-generic #46~20.04.1-Ubuntu SMP Mon Jan 18 17:52:23 UTC 2021  
DateTime=02/16/2021 11:49:25  
Method Library Clients Throughput Mean Error StdDev
Performance1 ENet 500 185,238 msg/s 2,699.2 ms 15.25 ms 15.66 ms
Performance2 ENet 500 1,123,648 msg/s 445.0 ms 2.71 ms 2.90 ms
Performance1 NetCoreServer 500 102,402 msg/s 4,882.7 ms 18.56 ms 21.38 ms
Performance2 NetCoreServer 500 107,236 msg/s 4,662.6 ms 22.80 ms 26.26 ms
Performance1 LiteNetLib 500 81,932 msg/s 6,102.6 ms 43.66 ms 50.27 ms
Performance2 LiteNetLib 500 307,560 msg/s 1,625.7 ms 9.74 ms 10.83 ms
Performance1 Kcp2k 500 65,381 msg/s 7,647.5 ms 873.18 ms 970.53 ms
Performance2 Kcp2k 500 51,884 msg/s 9,636.8 ms 1,815.34 ms 2,090.55 ms

PerformanceLinux

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-DLLJEE : .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.1  OS=Microsoft Windows 10.0.19042  
DateTime=02/16/2021 11:49:06  
Method Library Clients Throughput Mean Error StdDev
Performance1 ENet 500 96,028 msg/s 5,206.8 ms 272.20 ms 313.46 ms
Performance2 ENet 500 696,194 msg/s 718.2 ms 42.12 ms 48.51 ms
Performance1 NetCoreServer 500 71,063 msg/s 7,036.0 ms 37.55 ms 43.24 ms
Performance2 NetCoreServer 500 69,418 msg/s 7,202.7 ms 18.91 ms 21.02 ms
Performance1 LiteNetLib 500 93,363 msg/s 5,355.5 ms 30.85 ms 34.29 ms
Performance2 LiteNetLib 500 848,954 msg/s 589.0 ms 7.45 ms 8.28 ms
Performance1 Kcp2k 500 37,782 msg/s 13,233.7 ms 420.19 ms 483.89 ms
Performance2 Kcp2k 500 120,659 msg/s 4,143.9 ms 34.13 ms 39.30 ms

PerformanceWindows

0.8.0

15 Feb 18:38
0.8.0
4e3162c
Compare
Choose a tag to compare

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

0.5.1

03 Dec 14:23
3de9fac
Compare
Choose a tag to compare

0.5.1 - Introduction of NetData 📉

  • Even though the same machine is used, performance decreases quite a bit (7%-21%) when using netdata on the machine. This is a release to show that difference and give a possible way to recalculate future benchmarks using netdata.
  • Name Change from NetCoreNetworkBenchmark to NetworkBenchmarkDotNet, since .NET Core becomes .NET.
  • Update of LiteNetLib to 0.9.4 (And removal of submodule from repository, since it is not necessary anymore)
  • Change from .NET Core 3.1.9 to 3.1.10, last release in master branch with .NET Core 3.x

With NetData

Results v0.5.1 with Background Tasks: NetDat
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=3.1.404
  [Host]     : .NET Core 3.1.10 (CoreCLR 4.700.20.51601, CoreFX 4.700.20.51901), X64 RyuJIT
  Job-CXRHAN : .NET Core 3.1.10 (CoreCLR 4.700.20.51601, CoreFX 4.700.20.51901), X64 RyuJIT

Concurrent=False  Server=True  InvocationCount=1  
IterationCount=10  LaunchCount=1  UnrollFactor=1  
WarmupCount=1  
Benchmark ENet LiteNetLib NetCoreServer
Performance
Performance1 167,841 msg/s (5.958 s) 68,129 msg/s (14.678 s) 90,612 msg/s (11.036 s)
Performance2 993,048 msg/s (1.007 s) 267,379 msg/s (3.740 s) 91,215 msg/s (10.963 s)
Garbage
Alloc 0.512 MB 81.968 MB 161.892 MB
GC Pauses 107.5 ms (max 19.6 ms) 106.6 ms (max 2.7 ms) 86.8 ms (max 10.6 ms)

Without NetData

Results v0.5.1 with Background Tasks: None
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.100
  [Host]     : .NET Core 3.1.10 (CoreCLR 4.700.20.51601, CoreFX 4.700.20.51901), X64 RyuJIT
  Job-GXZRRI : .NET Core 3.1.10 (CoreCLR 4.700.20.51601, CoreFX 4.700.20.51901), X64 RyuJIT

Concurrent=False  Server=True  InvocationCount=1  
IterationCount=10  LaunchCount=1  UnrollFactor=1  
WarmupCount=1  
Benchmark ENet LiteNetLib NetCoreServer
Performance
Performance1 189,721 msg/s (5.271 s) 78,859 msg/s (12.681 s) 110,378 msg/s (9.060 s)
Performance2 1,061,684 msg/s (0.942 s) 289,218 msg/s (3.458 s) 111,165 msg/s (8.996 s)
Garbage
Alloc 0.512 MB 82.648 MB 162.256 MB
GC Pauses 84.9 ms (max 2.0 ms) 102.5 ms (max 3.0 ms) 68.6 ms (max 2.5 ms)

Comparison

Method Library Mean time increase
Performance1 ENet 13,04%
Performance2 ENet 6,91%
Performance1 NetCoreServer 21,81%
Performance2 NetCoreServer 21,87%
Performance1 LiteNetLib 15,75%
Performance2 LiteNetLib 8,17%

0.5.0

04 Nov 10:12
Compare
Choose a tag to compare

0.5.0 - Garbage Benchmark 🚮

  • Add Garbage Benchmark to collect information about allocations and GC times
  • Add option to define which benchmarks to run
  • Improve results summary to show the most relevant information for others
  • Add more data from the benchmarks to the results
  • Remove Benchmark folder to not clutter the repo too much (Results are in releases)
Results v0.5.0, 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=3.1.403
  [Host]     : .NET Core 3.1.9 (CoreCLR 4.700.20.47201, CoreFX 4.700.20.47203), X64 RyuJIT
Benchmark ENet LiteNetLib NetCoreServer
Performance
Performance1 192,034 msg/s (5,207.4 ms) 78,447 msg/s (12,747.5 ms) 109,813 msg/s (9,106.4 ms)
Performance2 1,075,153 msg/s (930.1 ms) 286,566 msg/s (3,489.6 ms) 114,481 msg/s (8,735.1 ms)
Garbage
Alloc 0.512 MB 81.161 MB 161.978 MB
GC Pauses 83.4 ms (max 8.4 ms) 101.1 ms (max 2.9 ms) 74.5 ms (max 2.5 ms)

0.4.0

03 Nov 09:59
Compare
Choose a tag to compare

0.4.0 - Commandline revamp 🧛

  • Change commandline from NDesk.Options (Deprecated) to System.Commanline
    • Change in input args
    • Supports commandline compleions
    • Cleanup of option naming
  • Change for Benchmark 2: Use 1000 instead of 100 clients. This way the two benchmarks are easier to compare.
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=3.1.403
  [Host]     : .NET Core 3.1.9 (CoreCLR 4.700.20.47201, CoreFX 4.700.20.47203), X64 RyuJIT
  Job-QYXZWQ : .NET Core 3.1.9 (CoreCLR 4.700.20.47201, CoreFX 4.700.20.47203), X64 RyuJIT

Concurrent=False  Server=True  InvocationCount=1  
IterationCount=10  LaunchCount=1  UnrollFactor=1  
WarmupCount=1  
Method Library Mean Error StdDev
Benchmark1 ENet 5,375.7 ms 174.01 ms 115.10 ms
Benchmark2 ENet 921.5 ms 29.62 ms 19.59 ms
Benchmark1 NetCoreServer 8,326.7 ms 192.85 ms 127.56 ms
Benchmark2 NetCoreServer 8,943.6 ms 63.25 ms 37.64 ms
Benchmark1 LiteNetLib 12,763.4 ms 437.03 ms 289.07 ms
Benchmark2 LiteNetLib 3,556.3 ms 57.70 ms 34.34 ms