Refactor logger. (#1247)

This commit is contained in:
Christian
2021-09-26 11:05:00 +02:00
committed by GitHub
parent c756a4092f
commit 0920c86d37
70 changed files with 618 additions and 510 deletions
@@ -1,22 +1,22 @@
using BenchmarkDotNet.Attributes;
using MQTTnet.Adapter;
using MQTTnet.Diagnostics;
using MQTTnet.Internal;
using MQTTnet.Packets;
using System;
using System.IO;
using System.Threading;
using MQTTnet.Diagnostics.Logger;
using MQTTnet.Formatter;
namespace MQTTnet.Benchmarks
{
[MemoryDiagnoser]
public class ChannelAdapterBenchmark
public sealed class ChannelAdapterBenchmark
{
private MqttChannelAdapter _channelAdapter;
private int _iterations;
private MemoryStream _stream;
private MqttPublishPacket _packet;
MqttChannelAdapter _channelAdapter;
int _iterations;
MemoryStream _stream;
MqttPublishPacket _packet;
[GlobalSetup]
public void Setup()
@@ -43,7 +43,7 @@ namespace MQTTnet.Benchmarks
var channel = new TestMqttChannel(_stream);
_channelAdapter = new MqttChannelAdapter(channel, serializer, null, new MqttNetLogger());
_channelAdapter = new MqttChannelAdapter(channel, serializer, null, new MqttNetEventLogger());
}
[Benchmark]
@@ -72,7 +72,7 @@ namespace MQTTnet.Benchmarks
_stream.Position = 0;
}
private static byte[] Join(params ArraySegment<byte>[] chunks)
static byte[] Join(params ArraySegment<byte>[] chunks)
{
var buffer = new MemoryStream();
foreach (var chunk in chunks)
@@ -1,6 +1,4 @@
using System.Linq;
using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Jobs;
using BenchmarkDotNet.Jobs;
using BenchmarkDotNet.Validators;
namespace MQTTnet.Benchmarks.Configurations
@@ -1,5 +1,4 @@
using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Environments;
using BenchmarkDotNet.Environments;
using BenchmarkDotNet.Jobs;
using BenchmarkDotNet.Toolchains.CsProj;
+45 -11
View File
@@ -1,6 +1,6 @@
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Jobs;
using MQTTnet.Diagnostics;
using MQTTnet.Diagnostics.Logger;
namespace MQTTnet.Benchmarks
{
@@ -9,17 +9,29 @@ namespace MQTTnet.Benchmarks
[MemoryDiagnoser]
public class LoggerBenchmark
{
MqttNetLogger _logger;
IMqttNetScopedLogger _childLogger;
MqttNetNullLogger _nullLogger;
MqttNetSourceLogger _sourceNullLogger;
MqttNetEventLogger _eventLogger;
MqttNetSourceLogger _sourceEventLogger;
MqttNetEventLogger _eventLoggerNoListener;
MqttNetSourceLogger _sourceEventLoggerNoListener;
bool _useHandler;
[GlobalSetup]
public void Setup()
{
_logger = new MqttNetLogger();
_childLogger = _logger.CreateScopedLogger("child");
_logger.LogMessagePublished += OnLogMessagePublished;
_nullLogger = new MqttNetNullLogger();
_sourceNullLogger = _nullLogger.WithSource("Source");
_eventLogger = new MqttNetEventLogger();
_eventLogger.LogMessagePublished += OnLogMessagePublished;
_sourceEventLogger = _eventLogger.WithSource("Source");
_eventLoggerNoListener = new MqttNetEventLogger();
_sourceEventLoggerNoListener = _eventLoggerNoListener.WithSource("Source");
}
void OnLogMessagePublished(object sender, MqttNetLogMessagePublishedEventArgs eventArgs)
@@ -31,22 +43,44 @@ namespace MQTTnet.Benchmarks
}
[Benchmark]
public void Log_10000_Messages_NoHandler()
public void Log_10000_Messages_No_Listener()
{
_useHandler = false;
for (var i = 0; i < 10000; i++)
{
_childLogger.Verbose("test log message {0}", "parameter");
_sourceEventLoggerNoListener.Verbose("test log message {0}", "parameter");
}
}
[Benchmark]
public void Log_10000_Messages_WithHandler()
public void Log_10000_Messages_With_To_String()
{
_useHandler = true;
for (var i = 0; i < 10000; i++)
{
_childLogger.Verbose("test log message {0}", "parameter");
_sourceEventLogger.Verbose("test log message {0}", "parameter");
}
}
[Benchmark]
public void Log_10000_Messages_Without_To_String()
{
_useHandler = false;
for (var i = 0; i < 10000; i++)
{
_sourceEventLogger.Verbose("test log message {0}", "parameter");
}
}
[Benchmark]
public void Log_10000_Messages_With_NullLogger()
{
for (var i = 0; i < 10000; i++)
{
_sourceNullLogger.Verbose("test log message {0}", "parameter");
}
}
}
@@ -11,9 +11,9 @@ namespace MQTTnet.Benchmarks
[MemoryDiagnoser]
public class MessageProcessingBenchmark
{
private IMqttServer _mqttServer;
private IMqttClient _mqttClient;
private MqttApplicationMessage _message;
IMqttServer _mqttServer;
IMqttClient _mqttClient;
MqttApplicationMessage _message;
[GlobalSetup]
public void Setup()
@@ -1,25 +1,20 @@
using BenchmarkDotNet.Attributes;
using MQTTnet.Client;
using MQTTnet.AspNetCore;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using MQTTnet.Server;
using MQTTnet.Diagnostics;
using MQTTnet.AspNetCore.Client;
using MQTTnet.AspNetCore.Extensions;
using MQTTnet.Client.Options;
using MQTTnet.Diagnostics.Logger;
namespace MQTTnet.Benchmarks
{
[MemoryDiagnoser]
public class MessageProcessingMqttConnectionContextBenchmark
{
private IWebHost _host;
private IMqttClient _mqttClient;
private MqttApplicationMessage _message;
IWebHost _host;
IMqttClient _mqttClient;
MqttApplicationMessage _message;
[GlobalSetup]
public void Setup()
@@ -39,7 +34,7 @@ namespace MQTTnet.Benchmarks
.Build();
var factory = new MqttFactory();
_mqttClient = factory.CreateMqttClient(new MqttNetLogger(), new MqttClientConnectionContextFactory());
_mqttClient = factory.CreateMqttClient(new MqttNetEventLogger(), new MqttClientConnectionContextFactory());
_host.StartAsync().GetAwaiter().GetResult();
@@ -1,26 +1,26 @@
using BenchmarkDotNet.Attributes;
using MQTTnet.Channel;
using MQTTnet.Client.Options;
using MQTTnet.Diagnostics;
using MQTTnet.Implementations;
using MQTTnet.Server;
using System.Threading;
using System.Threading.Tasks;
using MQTTnet.Diagnostics.Logger;
namespace MQTTnet.Benchmarks
{
[MemoryDiagnoser]
public class MqttTcpChannelBenchmark
public sealed class MqttTcpChannelBenchmark
{
private IMqttServer _mqttServer;
private IMqttChannel _serverChannel;
private IMqttChannel _clientChannel;
IMqttServer _mqttServer;
IMqttChannel _serverChannel;
IMqttChannel _clientChannel;
[GlobalSetup]
public void Setup()
{
var factory = new MqttFactory();
var tcpServer = new MqttTcpServerAdapter(new MqttNetLogger());
var tcpServer = new MqttTcpServerAdapter(new MqttNetEventLogger());
tcpServer.ClientHandler += args =>
{
_serverChannel =
@@ -31,7 +31,7 @@ namespace MQTTnet.Benchmarks
return Task.CompletedTask;
};
_mqttServer = factory.CreateMqttServer(new[] { tcpServer }, new MqttNetLogger());
_mqttServer = factory.CreateMqttServer(new[] { tcpServer }, new MqttNetEventLogger());
var serverOptions = new MqttServerOptionsBuilder().Build();
_mqttServer.StartAsync(serverOptions).GetAwaiter().GetResult();
@@ -54,7 +54,7 @@ namespace MQTTnet.Benchmarks
await Task.WhenAll(WriteAsync(iterations, size), ReadAsync(iterations, size));
}
private async Task ReadAsync(int iterations, int size)
async Task ReadAsync(int iterations, int size)
{
await Task.Yield();
@@ -68,7 +68,7 @@ namespace MQTTnet.Benchmarks
}
}
private async Task WriteAsync(int iterations, int size)
async Task WriteAsync(int iterations, int size)
{
await Task.Yield();
@@ -78,4 +78,4 @@ namespace MQTTnet.Benchmarks
}
}
}
}
}
+1 -1
View File
@@ -1,7 +1,7 @@
using System;
using BenchmarkDotNet.Running;
using MQTTnet.Benchmarks.Configurations;
using MQTTnet.Diagnostics;
using MQTTnet.Diagnostics.Runtime;
namespace MQTTnet.Benchmarks
{
@@ -9,7 +9,7 @@ using MQTTnet.Channel;
using MQTTnet.Formatter;
using MQTTnet.Formatter.V3;
using BenchmarkDotNet.Jobs;
using MQTTnet.Diagnostics;
using MQTTnet.Diagnostics.Logger;
namespace MQTTnet.Benchmarks
{
@@ -18,9 +18,9 @@ namespace MQTTnet.Benchmarks
[MemoryDiagnoser]
public class SerializerBenchmark
{
private MqttBasePacket _packet;
private ArraySegment<byte> _serializedPacket;
private IMqttPacketFormatter _serializer;
MqttBasePacket _packet;
ArraySegment<byte> _serializedPacket;
IMqttPacketFormatter _serializer;
[GlobalSetup]
public void Setup()
@@ -49,7 +49,7 @@ namespace MQTTnet.Benchmarks
{
var channel = new BenchmarkMqttChannel(_serializedPacket);
var fixedHeader = new byte[2];
var reader = new MqttChannelAdapter(channel, new MqttPacketFormatterAdapter(new MqttPacketWriter()), null, new MqttNetLogger());
var reader = new MqttChannelAdapter(channel, new MqttPacketFormatterAdapter(new MqttPacketWriter()), null, new MqttNetEventLogger());
for (var i = 0; i < 10000; i++)
{
@@ -59,10 +59,10 @@ namespace MQTTnet.Benchmarks
}
}
private class BenchmarkMqttChannel : IMqttChannel
class BenchmarkMqttChannel : IMqttChannel
{
private readonly ArraySegment<byte> _buffer;
private int _position;
readonly ArraySegment<byte> _buffer;
int _position;
public BenchmarkMqttChannel(ArraySegment<byte> buffer)
{
@@ -11,8 +11,8 @@ namespace MQTTnet.Benchmarks
[MemoryDiagnoser]
public class TcpPipesBenchmark
{
private IDuplexPipe _client;
private IDuplexPipe _server;
IDuplexPipe _client;
IDuplexPipe _server;
[GlobalSetup]
public void Setup()
@@ -43,7 +43,7 @@ namespace MQTTnet.Benchmarks
await Task.WhenAll(WriteAsync(iterations, size), ReadAsync(iterations, size));
}
private async Task ReadAsync(int iterations, int size)
async Task ReadAsync(int iterations, int size)
{
await Task.Yield();
@@ -59,7 +59,7 @@ namespace MQTTnet.Benchmarks
}
}
private async Task WriteAsync(int iterations, int size)
async Task WriteAsync(int iterations, int size)
{
await Task.Yield();
@@ -1,6 +1,5 @@
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Jobs;
using MQTTnet.Server;
using System;
using MQTTnet.Server.Internal;
@@ -11,7 +10,7 @@ namespace MQTTnet.Benchmarks
[MemoryDiagnoser]
public class TopicFilterComparerBenchmark
{
private static readonly char[] TopicLevelSeparator = { '/' };
static readonly char[] TopicLevelSeparator = { '/' };
[GlobalSetup]
public void Setup()
@@ -48,7 +47,7 @@ namespace MQTTnet.Benchmarks
}
}
private static bool LegacyMethodByStringSplit(string topic, string filter)
static bool LegacyMethodByStringSplit(string topic, string filter)
{
if (topic == null) throw new ArgumentNullException(nameof(topic));
if (filter == null) throw new ArgumentNullException(nameof(filter));