From a6954ef45abb5abf6b2ebeff53dd469fbe6b8ab9 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Wed, 22 Jun 2022 10:07:55 -0400 Subject: [PATCH] Avoid delegate allocation in TraceSourceLoggerProvider.GetOrAddTraceSource Every call to GetOrAddTraceSource was allocating a new delegate instance. --- .../src/TraceSourceLoggerProvider.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.Logging.TraceSource/src/TraceSourceLoggerProvider.cs b/src/libraries/Microsoft.Extensions.Logging.TraceSource/src/TraceSourceLoggerProvider.cs index c39c6b5f2f4f81..d5aa6ffefda55d 100644 --- a/src/libraries/Microsoft.Extensions.Logging.TraceSource/src/TraceSourceLoggerProvider.cs +++ b/src/libraries/Microsoft.Extensions.Logging.TraceSource/src/TraceSourceLoggerProvider.cs @@ -53,10 +53,9 @@ public ILogger CreateLogger(string name) return new TraceSourceLogger(GetOrAddTraceSource(name)); } - private DiagnosticsTraceSource GetOrAddTraceSource(string name) - { - return _sources.GetOrAdd(name, InitializeTraceSource); - } + private DiagnosticsTraceSource GetOrAddTraceSource(string name) => + _sources.TryGetValue(name, out DiagnosticsTraceSource? source) ? source : + _sources.GetOrAdd(name, InitializeTraceSource(name)); private DiagnosticsTraceSource InitializeTraceSource(string traceSourceName) {