Skip to content

Commit d7b0a50

Browse files
committed
Use LazyLock instead of OnceLock for benchmark data
1 parent ac6e046 commit d7b0a50

File tree

1 file changed

+12
-17
lines changed

1 file changed

+12
-17
lines changed

benches/benchmark.rs

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,38 +6,33 @@ macro_rules! benchmark {
66
($year:tt, $day:tt) => {
77
mod $day {
88
use aoc::$year::$day::*;
9-
use std::fs;
10-
use std::path::PathBuf;
11-
use std::sync::OnceLock;
9+
use std::fs::read_to_string;
10+
use std::path::Path;
11+
use std::sync::LazyLock;
1212
use test::Bencher;
1313

14-
fn load_once() -> &'static str {
15-
static DATA: OnceLock<String> = OnceLock::new();
16-
DATA.get_or_init(|| {
17-
let year = stringify!($year);
18-
let day = &format!("{}.txt", stringify!($day));
19-
let path: PathBuf = ["input", year, day].iter().collect();
20-
fs::read_to_string(path).unwrap()
21-
})
22-
}
14+
static DATA: LazyLock<String> = LazyLock::new(|| {
15+
let year = stringify!($year);
16+
let day = stringify!($day);
17+
let path = Path::new("input").join(year).join(day).with_extension("txt");
18+
read_to_string(path).unwrap()
19+
});
2320

2421
#[bench]
2522
fn parse_bench(b: &mut Bencher) {
26-
let data = load_once();
23+
let data = &DATA;
2724
b.iter(|| parse(data));
2825
}
2926

3027
#[bench]
3128
fn part1_bench(b: &mut Bencher) {
32-
let data = load_once();
33-
let input = parse(data);
29+
let input = parse(&DATA);
3430
b.iter(|| part1(&input));
3531
}
3632

3733
#[bench]
3834
fn part2_bench(b: &mut Bencher) {
39-
let data = load_once();
40-
let input = parse(data);
35+
let input = parse(&DATA);
4136
b.iter(|| part2(&input));
4237
}
4338
}

0 commit comments

Comments
 (0)