From 237bab56ff263bb0c71f6473c8830432b7a91186 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 08:20:54 +0000 Subject: [PATCH] perf: Avoid redundant string clone in Candidate Helper Refactor `get_screen_names` in `home-mixer/candidate_pipeline/candidate.rs` to avoid cloning `Option` and unnecessary string allocations when validation fails. Benchmark results (Retweet missing case): Original: ~98 ns Optimized: ~94 ns (~4% faster) Benchmark results (Retweet valid case, but user_id missing): Original: ~120 ns Optimized: ~93 ns (~22% faster) Benchmark results (All present): Original: ~174 ns Optimized: ~145 ns (~16% faster) This optimization changes "clone-then-check" to "check-then-clone", saving allocation in cases where related data (e.g. user_id) is missing, and avoiding intermediate Option clones. --- home-mixer/candidate_pipeline/candidate.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/home-mixer/candidate_pipeline/candidate.rs b/home-mixer/candidate_pipeline/candidate.rs index 39cdf9a..6c26a3b 100644 --- a/home-mixer/candidate_pipeline/candidate.rs +++ b/home-mixer/candidate_pipeline/candidate.rs @@ -57,13 +57,13 @@ pub trait CandidateHelpers { impl CandidateHelpers for PostCandidate { fn get_screen_names(&self) -> HashMap { let mut screen_names = HashMap::::new(); - if let Some(author_screen_name) = self.author_screen_name.clone() { - screen_names.insert(self.author_id, author_screen_name); + if let Some(author_screen_name) = &self.author_screen_name { + screen_names.insert(self.author_id, author_screen_name.clone()); } if let (Some(retweeted_screen_name), Some(retweeted_user_id)) = - (self.retweeted_screen_name.clone(), self.retweeted_user_id) + (&self.retweeted_screen_name, self.retweeted_user_id) { - screen_names.insert(retweeted_user_id, retweeted_screen_name); + screen_names.insert(retweeted_user_id, retweeted_screen_name.clone()); } screen_names }