commit 337c11909d6341fe06751e2aa96ae0f2f32ef673 parent 2887f7fb4e6c4707d6042fce05501d4d4bfa6300 Author: Mikolaj Lenczewski <mikolaj.lenczewski308@gmail.com> Date: Mon, 4 May 2020 12:36:44 +0100 Added server ready event to ReaderBenchmarks, to ensure correct RTT values. Diffstat:
2 files changed, 26 insertions(+), 13 deletions(-)
diff --git a/NetSharp/NetSharpExamples/Benchmarks/Datagram Network Connection Benchmarks/DatagramNetworkReaderBenchmark.cs b/NetSharp/NetSharpExamples/Benchmarks/Datagram Network Connection Benchmarks/DatagramNetworkReaderBenchmark.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; +using System.Threading; using System.Threading.Tasks; namespace NetSharpExamples.Benchmarks.Datagram_Network_Connection_Benchmarks @@ -19,6 +20,8 @@ namespace NetSharpExamples.Benchmarks.Datagram_Network_Connection_Benchmarks public static readonly Encoding ServerEncoding = Encoding.UTF8; public static readonly EndPoint ServerEndPoint = new IPEndPoint(IPAddress.Loopback, 12370); + public static readonly ManualResetEventSlim ServerReadyEvent = new ManualResetEventSlim(); + /// <inheritdoc /> public string Name { get; } = "Datagram Network Reader Benchmark"; @@ -40,6 +43,8 @@ namespace NetSharpExamples.Benchmarks.Datagram_Network_Connection_Benchmarks Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); clientSocket.Bind(ClientEndPoint); + ServerReadyEvent.Wait(); + byte[] sendBuffer = new byte[PacketSize]; byte[] receiveBuffer = new byte[PacketSize]; @@ -85,6 +90,13 @@ namespace NetSharpExamples.Benchmarks.Datagram_Network_Connection_Benchmarks Console.WriteLine($"{PacketCount} packets will be sent per client. This could take a long time (maybe more than a minute)!"); } + ClientBandwidths = new double[ClientCount]; + Task[] clientTasks = new Task[ClientCount]; + for (int i = 0; i < clientTasks.Length; i++) + { + clientTasks[i] = Task.Factory.StartNew(BenchmarkClientTask, i, TaskCreationOptions.LongRunning); + } + EndPoint defaultRemoteEndPoint = new IPEndPoint(IPAddress.Any, 0); Socket rawSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); @@ -93,12 +105,7 @@ namespace NetSharpExamples.Benchmarks.Datagram_Network_Connection_Benchmarks using DatagramNetworkReader reader = new DatagramNetworkReader(ref rawSocket, RequestHandler, defaultRemoteEndPoint, PacketSize); reader.Start(ClientCount); - ClientBandwidths = new double[ClientCount]; - Task[] clientTasks = new Task[ClientCount]; - for (int i = 0; i < clientTasks.Length; i++) - { - clientTasks[i] = Task.Factory.StartNew(BenchmarkClientTask, i, TaskCreationOptions.LongRunning); - } + ServerReadyEvent.Set(); await Task.WhenAll(clientTasks); diff --git a/NetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/StreamNetworkReaderBenchmark.cs b/NetSharp/NetSharpExamples/Benchmarks/Stream Network Connection Benchmarks/StreamNetworkReaderBenchmark.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; +using System.Threading; using System.Threading.Tasks; namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks @@ -19,6 +20,8 @@ namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks public static readonly Encoding ServerEncoding = Encoding.UTF8; public static readonly EndPoint ServerEndPoint = new IPEndPoint(IPAddress.Loopback, 12373); + public static readonly ManualResetEventSlim ServerReadyEvent = new ManualResetEventSlim(); + /// <inheritdoc /> public string Name { get; } = "Stream Network Reader Benchmark"; @@ -36,8 +39,9 @@ namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks BenchmarkHelper benchmarkHelper = new BenchmarkHelper(); Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); - clientSocket.Bind(ClientEndPoint); + + ServerReadyEvent.Wait(); clientSocket.Connect(ServerEndPoint); byte[] sendBuffer = new byte[PacketSize]; @@ -105,6 +109,13 @@ namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks Console.WriteLine($"{PacketCount} packets will be sent per client. This could take a long time (maybe more than a minute)!"); } + ClientBandwidths = new double[ClientCount]; + Task[] clientTasks = new Task[ClientCount]; + for (int i = 0; i < clientTasks.Length; i++) + { + clientTasks[i] = Task.Factory.StartNew(BenchmarkClientTask, i, TaskCreationOptions.LongRunning); + } + EndPoint defaultEndPoint = new IPEndPoint(IPAddress.Any, 0); Socket rawSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); @@ -114,12 +125,7 @@ namespace NetSharpExamples.Benchmarks.Stream_Network_Connection_Benchmarks using StreamNetworkReader reader = new StreamNetworkReader(ref rawSocket, RequestHandler, defaultEndPoint, PacketSize); reader.Start(ClientCount); - ClientBandwidths = new double[ClientCount]; - Task[] clientTasks = new Task[ClientCount]; - for (int i = 0; i < clientTasks.Length; i++) - { - clientTasks[i] = Task.Factory.StartNew(BenchmarkClientTask, i, TaskCreationOptions.LongRunning); - } + ServerReadyEvent.Set(); await Task.WhenAll(clientTasks);