From 623a3e85f2daaab49f56c05e2ade70817fc87c7e Mon Sep 17 00:00:00 2001 From: yacosta738 <33158051+yacosta738@users.noreply.github.com> Date: Thu, 14 May 2026 10:22:37 +0000 Subject: [PATCH] perf: optimize file extension discovery in technology detection Avoid redundant string allocations and map insertions by checking if an extension has already been recorded before performing format! and to_string() operations. In projects with many files, this reduces O(N) allocations to O(M) where M is the number of unique extensions. --- src/skills/detect.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/skills/detect.rs b/src/skills/detect.rs index 0302d761..aa8f6049 100644 --- a/src/skills/detect.rs +++ b/src/skills/detect.rs @@ -138,13 +138,14 @@ impl RepoMetadata { } if let Some(ext) = relative.extension().and_then(|e| e.to_str()) { - let dot_ext = format!(".{ext}"); - // Store first occurrence for deterministic evidence. - // Note: WalkDir sort_by_file_name() ensures deterministic choice if multiple exist. - extensions - .entry(dot_ext) - .or_insert_with(|| relative_buf.clone()); - extensions.entry(ext.to_string()).or_insert(relative_buf); + // Optimization: Skip string formatting and map insertions if extension already recorded. + if !extensions.contains_key(ext) { + let dot_ext = format!(".{ext}"); + // Store first occurrence for deterministic evidence. + // Note: WalkDir sort_by_file_name() ensures deterministic choice if multiple exist. + extensions.insert(dot_ext, relative_buf.clone()); + extensions.insert(ext.to_string(), relative_buf); + } } } }