From b4ecc648a77b1ecda6b7d747a72191dccea59287 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8E=AF=E5=87=9B?= Date: Tue, 6 Jan 2026 11:30:26 +0800 Subject: [PATCH] perf: remove .retain() immediate process --- sdgb-cli/src/commands.rs | 4 ++++ sdgb-cli/src/main.rs | 30 ++++++++++++++++++------------ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/sdgb-cli/src/commands.rs b/sdgb-cli/src/commands.rs index 51c6102..cc5e6f4 100644 --- a/sdgb-cli/src/commands.rs +++ b/sdgb-cli/src/commands.rs @@ -81,12 +81,14 @@ pub enum Commands { skip_login: bool, }, + /// Scrape all user, read possible id from stdin #[cfg(feature = "fetchall")] ListAllUser { #[arg(short, long, default_value_t = 5)] concurrency: usize, }, #[cfg(feature = "fetchall")] + /// Scrape B50 data ScrapeAllB50 { #[arg(short, long, default_value_t = 5)] concurrency: usize, @@ -96,6 +98,7 @@ pub enum Commands { #[arg(long, default_value_t = 16500)] max_rating: i64, }, + /// Scrape Region data #[cfg(feature = "fetchall")] ScrapeAllRegion { #[arg(short, long, default_value_t = 5)] @@ -106,6 +109,7 @@ pub enum Commands { #[arg(long, default_value_t = 16500)] max_rating: i64, }, + /// Scrape all player record #[cfg(feature = "fetchall")] ScrapeAllRecord { #[arg(short, long, default_value_t = 5)] diff --git a/sdgb-cli/src/main.rs b/sdgb-cli/src/main.rs index 57fc4a6..5d9c725 100644 --- a/sdgb-cli/src/main.rs +++ b/sdgb-cli/src/main.rs @@ -249,11 +249,13 @@ async fn main() -> Result<(), Box> { utils::helpers::{cached_concurrent_fetch_userfn, read_cache}, }; - let mut players: Vec = read_cache(PLAYERS)?; - players.retain(|p| p.player_rating >= min_rating && p.player_rating <= max_rating); - + let players: Vec = read_cache(PLAYERS)?; cached_concurrent_fetch_userfn( - players.iter().map(|p| p.user_id).collect::>(), + players + .iter() + .filter(|p| p.player_rating >= min_rating && p.player_rating <= max_rating) + .map(|p| p.user_id) + .collect::>(), &client, concurrency, RECORDS, @@ -274,11 +276,13 @@ async fn main() -> Result<(), Box> { utils::helpers::{cached_concurrent_fetch, read_cache}, }; - let mut players: Vec = read_cache(PLAYERS)?; - players.retain(|p| p.player_rating >= min_rating && p.player_rating <= max_rating); - + let players: Vec = read_cache(PLAYERS)?; cached_concurrent_fetch::( - players.iter().map(|p| p.user_id).collect::>(), + players + .iter() + .filter(|p| p.player_rating >= min_rating && p.player_rating <= max_rating) + .map(|p| p.user_id) + .collect::>(), &client, concurrency, B50, @@ -298,11 +302,13 @@ async fn main() -> Result<(), Box> { utils::helpers::{cached_concurrent_fetch, read_cache}, }; - let mut players: Vec = read_cache(PLAYERS)?; - players.retain(|p| p.player_rating >= min_rating && p.player_rating <= max_rating); - + let players: Vec = read_cache(PLAYERS)?; cached_concurrent_fetch::( - players.iter().map(|p| p.user_id).collect::>(), + players + .iter() + .filter(|p| p.player_rating >= min_rating && p.player_rating <= max_rating) + .map(|p| p.user_id) + .collect::>(), &client, concurrency, REGIONS,