From dafc07de5a46c893836064af59531165ccb1e129 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Wed, 24 May 2023 12:36:58 -0400 Subject: [PATCH] Reduce allocation in Activity.{Parent}Id (#86685) --- .../src/System/Diagnostics/Activity.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.cs index 68c344524457..db4d5e230810 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.cs @@ -225,8 +225,12 @@ public string DisplayName // Convert flags to binary. Span flagsChars = stackalloc char[2]; HexConverter.ToCharsBuffer((byte)((~ActivityTraceFlagsIsSet) & _w3CIdFlags), flagsChars, 0, HexConverter.Casing.Lower); - string id = "00-" + _traceId + "-" + _spanId + "-" + flagsChars.ToString(); - + string id = +#if NET6_0_OR_GREATER + string.Create(null, stackalloc char[128], $"00-{_traceId}-{_spanId}-{flagsChars}"); +#else + "00-" + _traceId + "-" + _spanId + "-" + flagsChars.ToString(); +#endif Interlocked.CompareExchange(ref _id, id, null); } @@ -253,7 +257,12 @@ public string DisplayName { Span flagsChars = stackalloc char[2]; HexConverter.ToCharsBuffer((byte)((~ActivityTraceFlagsIsSet) & _parentTraceFlags), flagsChars, 0, HexConverter.Casing.Lower); - string parentId = "00-" + _traceId + "-" + _parentSpanId + "-" + flagsChars.ToString(); + string parentId = +#if NET6_0_OR_GREATER + string.Create(null, stackalloc char[128], $"00-{_traceId}-{_parentSpanId}-{flagsChars}"); +#else + "00-" + _traceId + "-" + _parentSpanId + "-" + flagsChars.ToString(); +#endif Interlocked.CompareExchange(ref _parentId, parentId, null); } else if (Parent != null)