Сообщение журнала + Serilog = проблемы с производительностью?C#

Место общения программистов C#
Ответить
Anonymous
 Сообщение журнала + Serilog = проблемы с производительностью?

Сообщение Anonymous »

Как предлагает Microsoft, я попробовал использовать их высокопроизводительный подход к ведению журналов (также известный как шаблон LoggerMessage) с регистратором Serilog. По каким-то причинам это не дало никакого прироста производительности и, наоборот, привело к ухудшению производительности. Рассмотрим следующий тест:

Код: Выделить всё

[MemoryDiagnoser]
public class SerilogBenchmark
{
private static readonly ILogger Logger;
private static readonly string LogStringTemplate = "User {Username} {Email} has logged in.";
private static Action LoggerAction =
LoggerMessage.Define(
LogLevel.Information,
new EventId(1, "Login"),
LogStringTemplate);

static SerilogBenchmark()
{
var services = new ServiceCollection();

Log.Logger = new LoggerConfiguration()
.WriteTo.TextWriter(TextWriter.Null)
.CreateLogger();

services.AddLogging(builder =>
{
builder.ClearProviders();
builder.AddSerilog(dispose: true);
});

var serviceProvider = services.BuildServiceProvider();
Logger = serviceProvider.GetRequiredService();
}

[Benchmark]
public void TestLogExtension()
{
Logger.LogInformation(LogStringTemplate, "User", "foo@bar.com");
}

[Benchmark]
public void TestLogAction()
{
LoggerAction(Logger, "User", "foo@bar.com", null);
}
}
Результаты следующие:
Изображение

Итак, «высокопроизводительное ведение журнала» принесло мне на 50% больше памяти и снижение производительности на 25%.
Могло бы кто-нибудь, пожалуйста, помогите мне понять, что здесь может быть не так, и как добиться повышения производительности при использовании сообщений журнала с Serilog в качестве журнала?

Подробнее здесь: https://stackoverflow.com/questions/793 ... nce-issues
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»