Skip to content

Commit 420302d

Browse files
committed
feat(divan_compat): add thread example
1 parent 19cc9b1 commit 420302d

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

crates/divan_compat/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,7 @@ harness = false
3333
[[bench]]
3434
name = "drop_example"
3535
harness = false
36+
37+
[[bench]]
38+
name = "thread_example"
39+
harness = false
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
fn fibo(n: u64) -> u64 {
2+
if n <= 1 {
3+
n
4+
} else {
5+
fibo(n - 1) + fibo(n - 2)
6+
}
7+
}
8+
9+
#[codspeed_divan_compat::bench(args = [30, 31, 32])]
10+
fn fib_in_thread(n: usize) {
11+
let handle = std::thread::spawn(move || codspeed_divan_compat::black_box(fibo(n as u64)));
12+
handle.join().unwrap();
13+
}
14+
15+
#[codspeed_divan_compat::bench(args = [30, 31, 32])]
16+
fn fib_in_thread_bench(bencher: codspeed_divan_compat::Bencher, n: usize) {
17+
bencher.bench(|| {
18+
let handle = std::thread::spawn(move || codspeed_divan_compat::black_box(fibo(n as u64)));
19+
handle.join().unwrap()
20+
})
21+
}
22+
23+
#[codspeed_divan_compat::bench(args = [30, 31, 32])]
24+
fn fib_in_thread_bench_local(bencher: codspeed_divan_compat::Bencher, n: usize) {
25+
bencher.bench_local(|| {
26+
let handle = std::thread::spawn(move || codspeed_divan_compat::black_box(fibo(n as u64)));
27+
handle.join().unwrap()
28+
})
29+
}
30+
31+
fn main() {
32+
codspeed_divan_compat::main();
33+
}

0 commit comments

Comments
 (0)