perf: remove .retain() immediate process

This commit is contained in:
2026-01-06 11:30:26 +08:00
parent bd6df7b93a
commit b4ecc648a7
2 changed files with 22 additions and 12 deletions

View File

@@ -81,12 +81,14 @@ pub enum Commands {
skip_login: bool, skip_login: bool,
}, },
/// Scrape all user, read possible id from stdin
#[cfg(feature = "fetchall")] #[cfg(feature = "fetchall")]
ListAllUser { ListAllUser {
#[arg(short, long, default_value_t = 5)] #[arg(short, long, default_value_t = 5)]
concurrency: usize, concurrency: usize,
}, },
#[cfg(feature = "fetchall")] #[cfg(feature = "fetchall")]
/// Scrape B50 data
ScrapeAllB50 { ScrapeAllB50 {
#[arg(short, long, default_value_t = 5)] #[arg(short, long, default_value_t = 5)]
concurrency: usize, concurrency: usize,
@@ -96,6 +98,7 @@ pub enum Commands {
#[arg(long, default_value_t = 16500)] #[arg(long, default_value_t = 16500)]
max_rating: i64, max_rating: i64,
}, },
/// Scrape Region data
#[cfg(feature = "fetchall")] #[cfg(feature = "fetchall")]
ScrapeAllRegion { ScrapeAllRegion {
#[arg(short, long, default_value_t = 5)] #[arg(short, long, default_value_t = 5)]
@@ -106,6 +109,7 @@ pub enum Commands {
#[arg(long, default_value_t = 16500)] #[arg(long, default_value_t = 16500)]
max_rating: i64, max_rating: i64,
}, },
/// Scrape all player record
#[cfg(feature = "fetchall")] #[cfg(feature = "fetchall")]
ScrapeAllRecord { ScrapeAllRecord {
#[arg(short, long, default_value_t = 5)] #[arg(short, long, default_value_t = 5)]

View File

@@ -249,11 +249,13 @@ async fn main() -> Result<(), Box<dyn snafu::Error>> {
utils::helpers::{cached_concurrent_fetch_userfn, read_cache}, utils::helpers::{cached_concurrent_fetch_userfn, read_cache},
}; };
let mut players: Vec<GetUserPreviewApiResp> = read_cache(PLAYERS)?; let players: Vec<GetUserPreviewApiResp> = read_cache(PLAYERS)?;
players.retain(|p| p.player_rating >= min_rating && p.player_rating <= max_rating);
cached_concurrent_fetch_userfn( cached_concurrent_fetch_userfn(
players.iter().map(|p| p.user_id).collect::<Vec<u32>>(), players
.iter()
.filter(|p| p.player_rating >= min_rating && p.player_rating <= max_rating)
.map(|p| p.user_id)
.collect::<Vec<u32>>(),
&client, &client,
concurrency, concurrency,
RECORDS, RECORDS,
@@ -274,11 +276,13 @@ async fn main() -> Result<(), Box<dyn snafu::Error>> {
utils::helpers::{cached_concurrent_fetch, read_cache}, utils::helpers::{cached_concurrent_fetch, read_cache},
}; };
let mut players: Vec<GetUserPreviewApiResp> = read_cache(PLAYERS)?; let players: Vec<GetUserPreviewApiResp> = read_cache(PLAYERS)?;
players.retain(|p| p.player_rating >= min_rating && p.player_rating <= max_rating);
cached_concurrent_fetch::<GetUserRatingApiExt>( cached_concurrent_fetch::<GetUserRatingApiExt>(
players.iter().map(|p| p.user_id).collect::<Vec<u32>>(), players
.iter()
.filter(|p| p.player_rating >= min_rating && p.player_rating <= max_rating)
.map(|p| p.user_id)
.collect::<Vec<u32>>(),
&client, &client,
concurrency, concurrency,
B50, B50,
@@ -298,11 +302,13 @@ async fn main() -> Result<(), Box<dyn snafu::Error>> {
utils::helpers::{cached_concurrent_fetch, read_cache}, utils::helpers::{cached_concurrent_fetch, read_cache},
}; };
let mut players: Vec<GetUserPreviewApiResp> = read_cache(PLAYERS)?; let players: Vec<GetUserPreviewApiResp> = read_cache(PLAYERS)?;
players.retain(|p| p.player_rating >= min_rating && p.player_rating <= max_rating);
cached_concurrent_fetch::<GetUserRegionApiExt>( cached_concurrent_fetch::<GetUserRegionApiExt>(
players.iter().map(|p| p.user_id).collect::<Vec<u32>>(), players
.iter()
.filter(|p| p.player_rating >= min_rating && p.player_rating <= max_rating)
.map(|p| p.user_id)
.collect::<Vec<u32>>(),
&client, &client,
concurrency, concurrency,
REGIONS, REGIONS,