52 lines
1.2 KiB
C#
Raw Permalink Normal View History

2020-02-08 18:36:21 +01:00
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Jobs;
using Capnp.Rpc;
using CapnpGen;
using System;
using System.Collections.Generic;
using System.Text;
namespace Benchmark
{
public class CapnpBenchmark
{
[Params(20, 200, 2000, 20000, 200000, 2000000)]
public int PayloadBytes;
2020-02-23 14:24:17 +01:00
[Params(0, 256, 1024, 4096)]
public int BufferSize;
2020-02-08 18:36:21 +01:00
TcpRpcClient _client;
IEchoer _echoer;
byte[] _payload;
[GlobalSetup]
public void Setup()
{
_client = new TcpRpcClient("localhost", 5002);
2020-02-23 14:24:17 +01:00
if (BufferSize > 0)
_client.AddBuffering(BufferSize);
2020-02-08 18:36:21 +01:00
_client.WhenConnected.Wait();
_echoer = _client.GetMain<IEchoer>();
_payload = new byte[PayloadBytes];
new Random().NextBytes(_payload);
}
[GlobalCleanup]
public void Cleanup()
{
_echoer.Dispose();
_client.Dispose();
}
[Benchmark]
public void Echo()
{
var t = _echoer.Echo(_payload);
t.Wait();
if (t.Result?.Count != _payload.Length)
throw new InvalidOperationException("Echo server malfunction");
}
}
}