From ac129e35d4ebd96c81d804ecc66227c491cc41aa Mon Sep 17 00:00:00 2001 From: Fati Iseni Date: Tue, 7 Apr 2026 09:31:15 +0200 Subject: [PATCH] Add Target comparer and avoid string allocations. --- src/Verify/Verifier/VerifyEngine.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Verify/Verifier/VerifyEngine.cs b/src/Verify/Verifier/VerifyEngine.cs index 655358c18..94a527b0c 100644 --- a/src/Verify/Verifier/VerifyEngine.cs +++ b/src/Verify/Verifier/VerifyEngine.cs @@ -74,7 +74,7 @@ async Task Inner(FilePair file, Target target) HandleCompareResult(result, file); } - foreach (var group in targetList.GroupBy(_ => $"{_.Name}:{_.Extension}")) + foreach (var group in targetList.GroupBy(_ => _, TargetNameExtensionComparer.Instance)) { var targets = group.ToList(); if (targets.Count == 1) @@ -290,4 +290,15 @@ static void AcceptChanges(in FilePair file) File.Delete(file.VerifiedPath); File.Move(file.ReceivedPath, file.VerifiedPath); } + + private sealed class TargetNameExtensionComparer : IEqualityComparer + { + public static readonly TargetNameExtensionComparer Instance = new(); + + public bool Equals(Target x, Target y) => + (x.Name ?? "") == (y.Name ?? "") && x.Extension == y.Extension; + + public int GetHashCode(Target obj) => + (obj.Name ?? "", obj.Extension).GetHashCode(); + } }