tee: add benchmark (#12134)

This commit is contained in:
oech3
2026-05-06 04:41:13 +09:00
committed by GitHub
parent adce17fa26
commit fb93f53b3a
4 changed files with 40 additions and 2 deletions
+1
View File
@@ -48,6 +48,7 @@ jobs:
uu_shuf,
uu_sort,
uu_split,
uu_tee,
uu_timeout,
uu_tsort,
uu_unexpand,
Generated
+2
View File
@@ -4256,8 +4256,10 @@ name = "uu_tee"
version = "0.8.0"
dependencies = [
"clap",
"codspeed-divan-compat",
"fluent",
"rustix",
"tempfile",
"uucore",
]
+10 -2
View File
@@ -24,9 +24,17 @@ clap = { workspace = true }
uucore = { workspace = true, features = ["libc", "parser", "signals"] }
fluent = { workspace = true }
[target.'cfg(unix)'.dev-dependencies]
rustix = { workspace = true }
[dev-dependencies]
divan = { workspace = true }
rustix = { workspace = true, features = ["stdio", "fs"] }
tempfile = { workspace = true }
uucore = { workspace = true, features = ["benchmark"] }
[[bin]]
name = "tee"
path = "src/main.rs"
[[bench]]
name = "tee_bench"
harness = false
+27
View File
@@ -0,0 +1,27 @@
#[cfg(unix)]
use divan::{Bencher, black_box};
#[cfg(unix)]
use uu_tee::uumain;
#[cfg(unix)]
use uucore::benchmark::{run_util_function, setup_test_file};
#[cfg(unix)]
#[divan::bench(args = [10_000_000])]
fn tee_stdin_file(bencher: Bencher, size_bytes: usize) {
let data = vec![b'a'; size_bytes];
let file_path = setup_test_file(&data);
let file = std::fs::File::open(file_path).unwrap();
let stdin_bak = rustix::io::dup(rustix::stdio::stdin()).unwrap();
bencher.bench_local(|| {
use rustix::stdio::dup2_stdin;
rustix::fs::seek(&file, rustix::fs::SeekFrom::Start(0)).unwrap();
dup2_stdin(&file).unwrap(); // should be 1 thread
black_box(run_util_function(uumain, &[]));
dup2_stdin(&stdin_bak).unwrap(); // should be 1 thread
});
}
fn main() {
divan::main();
}