|
- using BenchmarkDotNet.Attributes;
- using BenchmarkDotNet.Jobs;
- using MQTTnet.Diagnostics.Logger;
-
- namespace MQTTnet.Benchmarks
- {
- [SimpleJob(RuntimeMoniker.Net461)]
- [RPlotExporter]
- [MemoryDiagnoser]
- public class LoggerBenchmark
- {
- MqttNetNullLogger _nullLogger;
- MqttNetSourceLogger _sourceNullLogger;
-
- MqttNetEventLogger _eventLogger;
- MqttNetSourceLogger _sourceEventLogger;
-
- MqttNetEventLogger _eventLoggerNoListener;
- MqttNetSourceLogger _sourceEventLoggerNoListener;
-
- bool _useHandler;
-
- [GlobalSetup]
- public void Setup()
- {
- _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)
- {
- if (_useHandler)
- {
- eventArgs.LogMessage.ToString();
- }
- }
-
- [Benchmark]
- public void Log_10000_Messages_No_Listener()
- {
- _useHandler = false;
-
- for (var i = 0; i < 10000; i++)
- {
- _sourceEventLoggerNoListener.Verbose("test log message {0}", "parameter");
- }
- }
-
- [Benchmark]
- public void Log_10000_Messages_With_To_String()
- {
- _useHandler = true;
-
- for (var i = 0; i < 10000; i++)
- {
- _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");
- }
- }
- }
- }
|