Improve logger performance.

This commit is contained in:
Christian Kratky
2020-05-12 21:55:15 +02:00
parent f0a1f9ca93
commit a58ab607ad
51 changed files with 290 additions and 300 deletions
@@ -43,7 +43,7 @@ namespace MQTTnet.Benchmarks
var channel = new TestMqttChannel(_stream);
_channelAdapter = new MqttChannelAdapter(channel, serializer, new MqttNetLogger().CreateChildLogger(nameof(MqttChannelAdapter)));
_channelAdapter = new MqttChannelAdapter(channel, serializer, new MqttNetLogger());
}
[Benchmark]
+4 -4
View File
@@ -9,15 +9,15 @@ namespace MQTTnet.Benchmarks
[MemoryDiagnoser]
public class LoggerBenchmark
{
private IMqttNetLogger _logger;
private IMqttNetLogger _childLogger;
private bool _useHandler;
IMqttNetLogger _logger;
IMqttNetScopedLogger _childLogger;
bool _useHandler;
[GlobalSetup]
public void Setup()
{
_logger = new MqttNetLogger();
_childLogger = _logger.CreateChildLogger("child");
_childLogger = _logger.CreateScopedLogger("child");
MqttNetGlobalLogger.LogMessagePublished += OnLogMessagePublished;
}
@@ -29,7 +29,7 @@ namespace MQTTnet.Benchmarks
Topic = "A"
};
_serializer = new MqttV311PacketFormatter();
_serializer = new MqttV311PacketFormatter(new MqttPacketWriter());
_serializedPacket = _serializer.Encode(_packet);
}
+7 -22
View File
@@ -7,29 +7,9 @@ namespace MQTTnet.Tests.Mockups
{
public event EventHandler<MqttNetLogMessagePublishedEventArgs> LogMessagePublished;
public IMqttNetLogger CreateChildLogger(string source)
{
return new TestLogger();
}
public void Verbose(string message, params object[] parameters)
{
}
public void Info(string message, params object[] parameters)
{
}
public void Warning(Exception exception, string message, params object[] parameters)
{
}
public void Error(Exception exception, string message, params object[] parameters)
{
}
public void Publish(MqttNetLogLevel logLevel, string source, string message, object[] parameters, Exception exception)
public IMqttNetScopedLogger CreateScopedLogger(string source)
{
return new MqttNetScopedLogger(this, source);
}
public void Publish(MqttNetLogLevel logLevel, string message, object[] parameters, Exception exception)
@@ -40,5 +20,10 @@ namespace MQTTnet.Tests.Mockups
Message = message
}));
}
public void Publish(MqttNetLogLevel logLevel, string source, string message, object[] parameters, Exception exception)
{
throw new NotImplementedException();
}
}
}
@@ -1,19 +1,18 @@
using MQTTnet.Adapter;
using MQTTnet.Client.Options;
using MQTTnet.Diagnostics;
namespace MQTTnet.Tests.Mockups
{
public class TestMqttCommunicationAdapterFactory : IMqttClientAdapterFactory
{
private readonly IMqttChannelAdapter _adapter;
readonly IMqttChannelAdapter _adapter;
public TestMqttCommunicationAdapterFactory(IMqttChannelAdapter adapter)
{
_adapter = adapter;
}
public IMqttChannelAdapter CreateClientAdapter(IMqttClientOptions options, IMqttNetLogger logger)
public IMqttChannelAdapter CreateClientAdapter(IMqttClientOptions options)
{
return _adapter;
}
@@ -24,7 +24,7 @@ namespace MQTTnet.Tests
//var globalLogCount = 0;
var localLogCount = 0;
var logger = new MqttNetLogger(null, logId);
var logger = new MqttNetLogger(logId);
// TODO: This is commented out because it is affected by other tests.
//// we have a theoretical bug here if a concurrent test is also logging
@@ -10,6 +10,7 @@ namespace MQTTnet.Tests
public void Root_Log_Messages()
{
var logger = new MqttNetLogger();
var childLogger = logger.CreateScopedLogger("Source1");
var logMessagesCount = 0;
@@ -18,10 +19,10 @@ namespace MQTTnet.Tests
logMessagesCount++;
};
logger.Verbose("Verbose");
logger.Info("Info");
logger.Warning(null, "Warning");
logger.Error(null, "Error");
childLogger.Verbose("Verbose");
childLogger.Info("Info");
childLogger.Warning(null, "Warning");
childLogger.Error(null, "Error");
Assert.AreEqual(4, logMessagesCount);
}
@@ -30,7 +31,7 @@ namespace MQTTnet.Tests
public void Bubbling_Log_Messages()
{
var logger = new MqttNetLogger();
var childLogger = logger.CreateChildLogger("Source1");
var childLogger = logger.CreateScopedLogger("Source1");
var logMessagesCount = 0;
@@ -50,8 +51,8 @@ namespace MQTTnet.Tests
[TestMethod]
public void Set_Custom_Log_ID()
{
var logger = new MqttNetLogger(null, "logId");
var childLogger = logger.CreateChildLogger("Source1");
var logger = new MqttNetLogger("logId");
var childLogger = logger.CreateScopedLogger("Source1");
logger.LogMessagePublished += (s, e) =>
{
@@ -156,7 +156,7 @@ namespace MQTTnet.Tests
[TestMethod]
public void Serialize_LargePacket()
{
var serializer = new MqttV311PacketFormatter();
var serializer = new MqttV311PacketFormatter(new MqttPacketWriter());
const int payloadLength = 80000;
@@ -560,11 +560,11 @@ namespace MQTTnet.Tests
IMqttPacketFormatter serializer;
if (protocolVersion == MqttProtocolVersion.V311)
{
serializer = new MqttV311PacketFormatter();
serializer = new MqttV311PacketFormatter(new MqttPacketWriter());
}
else if (protocolVersion == MqttProtocolVersion.V310)
{
serializer = new MqttV310PacketFormatter();
serializer = new MqttV310PacketFormatter(new MqttPacketWriter());
}
else
{
@@ -54,12 +54,12 @@ namespace MQTTnet.TestApp.NetCore
}
}
public static void RunClientAndServer()
public static async Task RunClientAndServer()
{
try
{
var mqttServer = new MqttFactory().CreateMqttServer();
mqttServer.StartAsync(new MqttServerOptions()).GetAwaiter().GetResult();
await mqttServer.StartAsync(new MqttServerOptions()).ConfigureAwait(false);
var options = new MqttClientOptions
{
@@ -67,11 +67,12 @@ namespace MQTTnet.TestApp.NetCore
{
Server = "127.0.0.1"
},
CleanSession = true
CleanSession = true,
//KeepAlivePeriod = TimeSpan.FromSeconds(1)
};
var client = new MqttFactory().CreateMqttClient();
client.ConnectAsync(options).GetAwaiter().GetResult();
await client.ConnectAsync(options).ConfigureAwait(false);
var message = CreateMessage();
var stopwatch = new Stopwatch();
@@ -83,7 +84,7 @@ namespace MQTTnet.TestApp.NetCore
var sentMessagesCount = 0;
while (stopwatch.ElapsedMilliseconds < 1000)
{
client.PublishAsync(message).GetAwaiter().GetResult();
await client.PublishAsync(message, CancellationToken.None).ConfigureAwait(false);
sentMessagesCount++;
}
+3 -2
View File
@@ -15,6 +15,8 @@ namespace MQTTnet.TestApp.NetCore
{
public static void Main()
{
//MqttNetConsoleLogger.ForwardToConsole();
Console.WriteLine($"MQTTnet - TestApp.{TargetFrameworkProvider.TargetFramework}");
Console.WriteLine("1 = Start client");
Console.WriteLine("2 = Start server");
@@ -40,8 +42,7 @@ namespace MQTTnet.TestApp.NetCore
}
else if (pressedKey.KeyChar == '3')
{
PerformanceTest.RunClientAndServer();
return;
Task.Run(PerformanceTest.RunClientAndServer);
}
else if (pressedKey.KeyChar == '4')
{