From 23fa6d9f1bb5d32931c6e44415a7f951973287aa Mon Sep 17 00:00:00 2001 From: pshu Date: Mon, 16 Jun 2025 18:30:06 +0800 Subject: [PATCH 1/3] chore: try codspeed with tokio runtime --- benches/resolver.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/benches/resolver.rs b/benches/resolver.rs index 015e226..f3282db 100644 --- a/benches/resolver.rs +++ b/benches/resolver.rs @@ -157,7 +157,6 @@ fn bench_resolver(c: &mut Criterion) { ); }); - #[cfg(not(feature = "codspeed"))] group.bench_with_input(BenchmarkId::from_parameter("multi-thread"), &data, |b, data| { let runner = runtime::Runtime::new().expect("failed to create tokio runtime"); let oxc_resolver = Arc::new(oxc_resolver()); From 67da45a89746000ea74594e945962545f6b53d01 Mon Sep 17 00:00:00 2001 From: CPunisher <1343316114@qq.com> Date: Tue, 17 Jun 2025 14:42:51 +0800 Subject: [PATCH 2/3] Limit max blocking threads --- benches/resolver.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/benches/resolver.rs b/benches/resolver.rs index f3282db..ba5f1da 100644 --- a/benches/resolver.rs +++ b/benches/resolver.rs @@ -8,7 +8,7 @@ use std::{ path::{Path, PathBuf}, sync::Arc, }; -use tokio::runtime; +use tokio::runtime::{self, Builder}; use tokio::task::JoinSet; fn symlink, Q: AsRef>(original: P, link: Q) -> io::Result<()> { @@ -134,6 +134,13 @@ fn bench_resolver(c: &mut Criterion) { let mut group = c.benchmark_group("resolver"); + let multi_rt = || { + Builder::new_multi_thread() + .max_blocking_threads(256) + .build() + .expect("failed to create tokio runtime") + }; + // force to use four threads rayon::ThreadPoolBuilder::new() .num_threads(4) @@ -158,7 +165,7 @@ fn bench_resolver(c: &mut Criterion) { }); group.bench_with_input(BenchmarkId::from_parameter("multi-thread"), &data, |b, data| { - let runner = runtime::Runtime::new().expect("failed to create tokio runtime"); + let runner = multi_rt(); let oxc_resolver = Arc::new(oxc_resolver()); b.iter_with_setup( @@ -207,12 +214,11 @@ fn bench_resolver(c: &mut Criterion) { }, ); - #[cfg(not(feature = "codspeed"))] group.bench_with_input( BenchmarkId::from_parameter("resolve from symlinks multi thread"), &symlinks_range, |b, data| { - let runner = runtime::Runtime::new().expect("failed to create tokio runtime"); + let runner = multi_rt(); let oxc_resolver = Arc::new(oxc_resolver()); let symlink_test_dir = symlink_test_dir.clone(); From 9127f53c250b17ed8ef1b66abcb7b10cec744161 Mon Sep 17 00:00:00 2001 From: CPunisher <1343316114@qq.com> Date: Tue, 17 Jun 2025 14:54:00 +0800 Subject: [PATCH 3/3] Add comments --- benches/resolver.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/benches/resolver.rs b/benches/resolver.rs index ba5f1da..a6a51ac 100644 --- a/benches/resolver.rs +++ b/benches/resolver.rs @@ -134,6 +134,7 @@ fn bench_resolver(c: &mut Criterion) { let mut group = c.benchmark_group("resolver"); + // codspeed can only handle to up to 500 threads let multi_rt = || { Builder::new_multi_thread() .max_blocking_threads(256)