From 979b8f9da6186c84efacae5c49c465ca48569e52 Mon Sep 17 00:00:00 2001 From: qiufengshe <172344058@qq.com> Date: Sat, 19 Apr 2025 15:32:10 +0800 Subject: [PATCH 1/3] minimize temporary strings for better performance --- src/Commands/Statistics.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Commands/Statistics.cs b/src/Commands/Statistics.cs index 41b3889eb..ea0b86de4 100644 --- a/src/Commands/Statistics.cs +++ b/src/Commands/Statistics.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace SourceGit.Commands { @@ -40,7 +40,7 @@ private void ParseLine(Models.Statistics statistics, string line) if (dateEndIdx == -1) return; - var dateStr = line.Substring(0, dateEndIdx); + var dateStr = line.AsSpan().Slice(0, dateEndIdx); if (double.TryParse(dateStr, out var date)) statistics.AddCommit(line.Substring(dateEndIdx + 1), date); } From c99131d1cb1f57fce7c17fe73e399d59593a9f19 Mon Sep 17 00:00:00 2001 From: qiufengshe <172344058@qq.com> Date: Mon, 21 Apr 2025 21:37:23 +0800 Subject: [PATCH 2/3] minimize temporary strings for better performance --- src/Commands/Diff.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Commands/Diff.cs b/src/Commands/Diff.cs index 65a2a6f53..8df8cbaa2 100644 --- a/src/Commands/Diff.cs +++ b/src/Commands/Diff.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Text.RegularExpressions; @@ -103,7 +103,7 @@ private void ParseLine(string line) } else if (line.StartsWith("-size ", StringComparison.Ordinal)) { - _result.LFSDiff.Old.Size = long.Parse(line.Substring(6)); + _result.LFSDiff.Old.Size = long.Parse(line.AsSpan().Slice(6)); } } else if (ch == '+') @@ -114,12 +114,12 @@ private void ParseLine(string line) } else if (line.StartsWith("+size ", StringComparison.Ordinal)) { - _result.LFSDiff.New.Size = long.Parse(line.Substring(6)); + _result.LFSDiff.New.Size = long.Parse(line.AsSpan().Slice(6)); } } else if (line.StartsWith(" size ", StringComparison.Ordinal)) { - _result.LFSDiff.New.Size = _result.LFSDiff.Old.Size = long.Parse(line.Substring(6)); + _result.LFSDiff.New.Size = _result.LFSDiff.Old.Size = long.Parse(line.AsSpan().Slice(6)); } return; } From 639003d9d4030d966ec28a10c5256613e5acf7ce Mon Sep 17 00:00:00 2001 From: qiufengshe <172344058@qq.com> Date: Wed, 23 Apr 2025 20:36:36 +0800 Subject: [PATCH 3/3] minimize temporary strings for better performance --- src/ViewModels/WorkingCopy.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/ViewModels/WorkingCopy.cs b/src/ViewModels/WorkingCopy.cs index 65759412e..8a8cfa7a5 100644 --- a/src/ViewModels/WorkingCopy.cs +++ b/src/ViewModels/WorkingCopy.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; @@ -638,7 +638,7 @@ public ContextMenu CreateContextMenuForUnstagedChanges() } else if (_inProgressContext is RevertInProgress revert) { - useTheirs.Header = App.Text("FileCM.ResolveUsing", revert.Head.SHA.Substring(0, 10) + " (revert)"); + useTheirs.Header = App.Text("FileCM.ResolveUsing", $"{revert.Head.SHA.AsSpan().Slice(0, 10)} (revert)"); useMine.Header = App.Text("FileCM.ResolveUsing", _repo.CurrentBranch.Name); } else if (_inProgressContext is MergeInProgress merge) @@ -775,7 +775,7 @@ public ContextMenu CreateContextMenuForUnstagedChanges() byExtension.Header = App.Text("WorkingCopy.AddToGitIgnore.Extension", extension); byExtension.Click += (_, e) => { - Commands.GitIgnore.Add(_repo.FullPath, "*" + extension); + Commands.GitIgnore.Add(_repo.FullPath, $"*{extension}"); e.Handled = true; }; addToIgnore.Items.Add(byExtension); @@ -786,7 +786,7 @@ public ContextMenu CreateContextMenuForUnstagedChanges() byExtensionInSameFolder.Click += (_, e) => { var dir = Path.GetDirectoryName(change.Path).Replace("\\", "/"); - Commands.GitIgnore.Add(_repo.FullPath, dir + "/*" + extension); + Commands.GitIgnore.Add(_repo.FullPath, $"{dir}/*{extension}"); e.Handled = true; }; addToIgnore.Items.Add(byExtensionInSameFolder); @@ -828,7 +828,7 @@ public ContextMenu CreateContextMenuForUnstagedChanges() lfsTrackByExtension.Click += async (_, e) => { var log = _repo.CreateLog("Track LFS"); - var succ = await Task.Run(() => new Commands.LFS(_repo.FullPath).Track("*" + extension, false, log)); + var succ = await Task.Run(() => new Commands.LFS(_repo.FullPath).Track($"*{extension}", false, log)); if (succ) App.SendNotification(_repo.FullPath, $"Tracking all *{extension} files successfully!"); @@ -997,7 +997,7 @@ public ContextMenu CreateContextMenuForUnstagedChanges() } else if (_inProgressContext is RevertInProgress revert) { - useTheirs.Header = App.Text("FileCM.ResolveUsing", revert.Head.SHA.Substring(0, 10) + " (revert)"); + useTheirs.Header = App.Text("FileCM.ResolveUsing", $"{revert.Head.SHA.AsSpan().Slice(0, 10)} (revert)"); useMine.Header = App.Text("FileCM.ResolveUsing", _repo.CurrentBranch.Name); } else if (_inProgressContext is MergeInProgress merge) @@ -1424,7 +1424,7 @@ public ContextMenu CreateContextMenuForCommitMessages() var home = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); var prefixLen = home.EndsWith('/') ? home.Length - 1 : home.Length; if (gitTemplate.StartsWith(home, StringComparison.Ordinal)) - friendlyName = "~" + gitTemplate.Substring(prefixLen); + friendlyName = $"~{gitTemplate.AsSpan().Slice(prefixLen)}"; } var gitTemplateItem = new MenuItem();