Skip to content

Commit fd4f1f4

Browse files
committed
add benchmark project
1 parent 0a6a6e9 commit fd4f1f4

File tree

7 files changed

+129
-0
lines changed

7 files changed

+129
-0
lines changed

Benchmarks/Benchmarks.csproj

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<AssemblyOriginatorKeyFile>../projects/rabbit.snk</AssemblyOriginatorKeyFile>
6+
<SignAssembly>true</SignAssembly>
7+
<TargetFramework>netcoreapp3.1</TargetFramework>
8+
</PropertyGroup>
9+
10+
<ItemGroup>
11+
<PackageReference Include="BenchmarkDotNet" Version="0.12.1" />
12+
</ItemGroup>
13+
14+
<ItemGroup>
15+
<ProjectReference Include="..\projects\RabbitMQ.Client\RabbitMQ.Client.csproj" />
16+
</ItemGroup>
17+
18+
</Project>

Benchmarks/Program.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using BenchmarkDotNet.Running;
2+
3+
namespace Benchmarks
4+
{
5+
public static class Program
6+
{
7+
public static void Main(string[] args)
8+
{
9+
BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);
10+
}
11+
}
12+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using BenchmarkDotNet.Attributes;
2+
using RabbitMQ.Client.Framing.Impl;
3+
using RabbitMQ.Client.Impl;
4+
5+
namespace Benchmarks.WireFormatting
6+
{
7+
[ShortRunJob]
8+
[MemoryDiagnoser]
9+
public class WireFormatting_Write_BasicAck
10+
{
11+
private readonly byte[] _buffer = new byte[1024];
12+
private readonly BasicAck _method = new BasicAck(ulong.MaxValue, true);
13+
14+
[Benchmark]
15+
public int WriteArgumentsTo_MethodArgumentWriter()
16+
{
17+
var writer = new MethodArgumentWriter(_buffer);
18+
_method.WriteArgumentsTo(ref writer);
19+
return writer.Offset;
20+
}
21+
22+
[Benchmark(Baseline = true)]
23+
public int WriteArgumentsTo()
24+
{
25+
return _method.WriteArgumentsTo(_buffer);
26+
}
27+
}
28+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using BenchmarkDotNet.Attributes;
2+
using RabbitMQ.Client.Impl;
3+
using BasicDeliver = RabbitMQ.Client.Framing.Impl.BasicDeliver;
4+
5+
namespace Benchmarks.WireFormatting
6+
{
7+
[ShortRunJob]
8+
[MemoryDiagnoser]
9+
public class WireFormatting_Write_BasicDeliver
10+
{
11+
private readonly byte[] _buffer = new byte[1024];
12+
private readonly BasicDeliver _method = new BasicDeliver(string.Empty, 0, false, string.Empty, string.Empty);
13+
14+
[Benchmark]
15+
public int WriteArgumentsTo_MethodArgumentWriter()
16+
{
17+
var writer = new MethodArgumentWriter(_buffer);
18+
_method.WriteArgumentsTo(ref writer);
19+
return writer.Offset;
20+
}
21+
22+
[Benchmark(Baseline = true)]
23+
public int WriteArgumentsTo()
24+
{
25+
return _method.WriteArgumentsTo(_buffer);
26+
}
27+
}
28+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using BenchmarkDotNet.Attributes;
2+
using RabbitMQ.Client.Framing.Impl;
3+
using RabbitMQ.Client.Impl;
4+
5+
namespace Benchmarks.WireFormatting
6+
{
7+
[ShortRunJob]
8+
[MemoryDiagnoser]
9+
public class WireFormatting_Write_ChannelClose
10+
{
11+
private readonly byte[] _buffer = new byte[1024];
12+
private readonly ChannelClose _method = new ChannelClose(333, string.Empty, 0099, 2999);
13+
14+
[Benchmark]
15+
public int WriteArgumentsTo_MethodArgumentWriter()
16+
{
17+
var writer = new MethodArgumentWriter(_buffer);
18+
_method.WriteArgumentsTo(ref writer);
19+
return writer.Offset;
20+
}
21+
22+
[Benchmark(Baseline = true)]
23+
public int WriteArgumentsTo()
24+
{
25+
return _method.WriteArgumentsTo(_buffer);
26+
}
27+
}
28+
}

RabbitMQDotNetClient.sln

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RabbitMQ.Client", "projects
1212
EndProject
1313
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Unit", "projects\Unit\Unit.csproj", "{B8FAC024-CC03-4067-9FFC-02846FB8AE48}"
1414
EndProject
15+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestApp", "TestApp\TestApp.csproj", "{99AADCCB-0189-40A8-87BD-A5D39E5C90BD}"
16+
EndProject
17+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Benchmarks", "Benchmarks\Benchmarks.csproj", "{38D72C9A-68E9-4653-B0CE-C7BA9FFD91D0}"
18+
EndProject
1519
Global
1620
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1721
Debug|Any CPU = Debug|Any CPU
@@ -26,6 +30,14 @@ Global
2630
{B8FAC024-CC03-4067-9FFC-02846FB8AE48}.Debug|Any CPU.Build.0 = Debug|Any CPU
2731
{B8FAC024-CC03-4067-9FFC-02846FB8AE48}.Release|Any CPU.ActiveCfg = Release|Any CPU
2832
{B8FAC024-CC03-4067-9FFC-02846FB8AE48}.Release|Any CPU.Build.0 = Release|Any CPU
33+
{99AADCCB-0189-40A8-87BD-A5D39E5C90BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
34+
{99AADCCB-0189-40A8-87BD-A5D39E5C90BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
35+
{99AADCCB-0189-40A8-87BD-A5D39E5C90BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
36+
{99AADCCB-0189-40A8-87BD-A5D39E5C90BD}.Release|Any CPU.Build.0 = Release|Any CPU
37+
{38D72C9A-68E9-4653-B0CE-C7BA9FFD91D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
38+
{38D72C9A-68E9-4653-B0CE-C7BA9FFD91D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
39+
{38D72C9A-68E9-4653-B0CE-C7BA9FFD91D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
40+
{38D72C9A-68E9-4653-B0CE-C7BA9FFD91D0}.Release|Any CPU.Build.0 = Release|Any CPU
2941
EndGlobalSection
3042
GlobalSection(SolutionProperties) = preSolution
3143
HideSolutionNode = FALSE

projects/RabbitMQ.Client/RabbitMQ.Client.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@
5151
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
5252
<_Parameter1>Unit, PublicKey=00240000048000009400000006020000002400005253413100040000010001008d20ec856aeeb8c3153a77faa2d80e6e43b5db93224a20cc7ae384f65f142e89730e2ff0fcc5d578bbe96fa98a7196c77329efdee4579b3814c0789e5a39b51df6edd75b602a33ceabdfcf19a3feb832f31d8254168cd7ba5700dfbca301fbf8db614ba41ba18474de0a5f4c2d51c995bc3636c641c8cbe76f45717bfcb943b5</_Parameter1>
5353
</AssemblyAttribute>
54+
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
55+
<_Parameter1>Benchmarks, PublicKey=00240000048000009400000006020000002400005253413100040000010001008d20ec856aeeb8c3153a77faa2d80e6e43b5db93224a20cc7ae384f65f142e89730e2ff0fcc5d578bbe96fa98a7196c77329efdee4579b3814c0789e5a39b51df6edd75b602a33ceabdfcf19a3feb832f31d8254168cd7ba5700dfbca301fbf8db614ba41ba18474de0a5f4c2d51c995bc3636c641c8cbe76f45717bfcb943b5</_Parameter1>
56+
</AssemblyAttribute>
5457
</ItemGroup>
5558

5659
<ItemGroup>

0 commit comments

Comments
 (0)