From e9a688be15302a874814ff18557f01a223067fe0 Mon Sep 17 00:00:00 2001 From: Yves57 Date: Thu, 22 Dec 2016 13:48:33 +0100 Subject: [PATCH] Optimize 'Span.Content' memory allocation --- .../Legacy/Span.cs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/Microsoft.AspNetCore.Razor.Evolution/Legacy/Span.cs b/src/Microsoft.AspNetCore.Razor.Evolution/Legacy/Span.cs index 47e9e8e468..3a0e2ad63c 100644 --- a/src/Microsoft.AspNetCore.Razor.Evolution/Legacy/Span.cs +++ b/src/Microsoft.AspNetCore.Razor.Evolution/Legacy/Span.cs @@ -42,14 +42,23 @@ namespace Microsoft.AspNetCore.Razor.Evolution.Legacy { if (_content == null) { - var builder = new StringBuilder(); - for (var i = 0; i < Symbols.Count; i++) + var symbolCount = Symbols.Count; + if (symbolCount == 1) { - var symbol = Symbols[i]; - builder.Append(symbol.Content); + // Perf: no StringBuilder allocation if not necessary + _content = Symbols[0].Content; } + else + { + var builder = new StringBuilder(); + for (var i = 0; i < symbolCount; i++) + { + var symbol = Symbols[i]; + builder.Append(symbol.Content); + } - _content = builder.ToString(); + _content = builder.ToString(); + } } return _content;