Skip to content

Commit 750ca41

Browse files
committed
add crates/p64/benches/p64_bench.rs
1 parent 57c4b9c commit 750ca41

1 file changed

Lines changed: 92 additions & 0 deletions

File tree

crates/p64/benches/p64_bench.rs

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
use criterion::{black_box, criterion_group, criterion_main, Criterion};
2+
use p64::*;
3+
4+
fn make_heels() -> HeelPlanes {
5+
HeelPlanes::new([
6+
0xAAAA_AAAA_AAAA_AAAA,
7+
0x5555_5555_5555_5555,
8+
0xFFFF_0000_FFFF_0000,
9+
0x0000_FFFF_0000_FFFF,
10+
0xFF00_FF00_FF00_FF00,
11+
0x00FF_00FF_00FF_00FF,
12+
0xF0F0_F0F0_F0F0_F0F0,
13+
0x0F0F_0F0F_0F0F_0F0F,
14+
])
15+
}
16+
17+
fn bench_expand(c: &mut Criterion) {
18+
let heels = make_heels();
19+
c.bench_function("expand_8_to_64", |b| {
20+
b.iter(|| black_box(black_box(&heels).expand()))
21+
});
22+
}
23+
24+
fn bench_attend(c: &mut Criterion) {
25+
let palette = make_heels().expand();
26+
let query = 0xDEAD_BEEF_CAFE_BABEu64;
27+
28+
c.bench_function("attend_single", |b| {
29+
b.iter(|| black_box(black_box(&palette).attend(black_box(query), 16)))
30+
});
31+
}
32+
33+
fn bench_attend_batch(c: &mut Criterion) {
34+
let palette = make_heels().expand();
35+
let queries: Vec<u64> = (0..1024).map(|i| i * 0x0123_4567_89AB + 0xDEAD).collect();
36+
37+
c.bench_function("attend_1024_queries", |b| {
38+
b.iter(|| {
39+
for &q in &queries {
40+
black_box(palette.attend(black_box(q), 16));
41+
}
42+
})
43+
});
44+
}
45+
46+
fn bench_moe_gate(c: &mut Criterion) {
47+
let heels = make_heels();
48+
let query = 0xDEAD_BEEF_CAFE_BABEu64;
49+
50+
c.bench_function("moe_gate", |b| {
51+
b.iter(|| black_box(black_box(&heels).moe_gate(black_box(query), 20)))
52+
});
53+
}
54+
55+
fn bench_soft_moe(c: &mut Criterion) {
56+
let heels = make_heels();
57+
let query = 0xDEAD_BEEF_CAFE_BABEu64;
58+
59+
c.bench_function("soft_moe", |b| {
60+
b.iter(|| black_box(black_box(&heels).soft_moe(black_box(query), 20)))
61+
});
62+
}
63+
64+
fn bench_denoise(c: &mut Criterion) {
65+
let palette = make_heels().expand();
66+
let noisy = 0x1234_5678_9ABC_DEF0u64;
67+
68+
c.bench_function("denoise_10_steps", |b| {
69+
b.iter(|| black_box(black_box(&palette).denoise(black_box(noisy), 10, 32)))
70+
});
71+
}
72+
73+
fn bench_nearest_k(c: &mut Criterion) {
74+
let palette = make_heels().expand();
75+
let query = 0xDEAD_BEEF_CAFE_BABEu64;
76+
77+
c.bench_function("nearest_k_8", |b| {
78+
b.iter(|| black_box(black_box(&palette).nearest_k(black_box(query), 8)))
79+
});
80+
}
81+
82+
criterion_group!(
83+
benches,
84+
bench_expand,
85+
bench_attend,
86+
bench_attend_batch,
87+
bench_moe_gate,
88+
bench_soft_moe,
89+
bench_denoise,
90+
bench_nearest_k,
91+
);
92+
criterion_main!(benches);

0 commit comments

Comments
 (0)