1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
use std::hint::black_box as bb;
use std::sync::LazyLock;
use criterion::Bencher;
use time::util;
/// Generate a representative sample of all years.
fn representative_years() -> [i32; 800] {
static DATES: LazyLock<[i32; 800]> = LazyLock::new(|| {
let mut years = [0; _];
for year in -400..400 {
years[(year + 400) as usize] = year;
}
crate::shuffle(years)
});
*DATES
}
setup_benchmark! {
"Utils",
fn noop(ben: &mut Bencher<'_>) {
ben.iter(|| {
for i in representative_years() {
let _ = bb(i);
}
});
}
fn is_leap_year(ben: &mut Bencher<'_>) {
ben.iter(|| {
for year in representative_years() {
let _ = bb(util::is_leap_year(bb(year)));
}
});
}
fn days_in_year(ben: &mut Bencher<'_>) {
ben.iter(|| {
for year in representative_years() {
let _ = bb(util::days_in_year(bb(year)));
}
});
}
fn weeks_in_year(ben: &mut Bencher<'_>) {
ben.iter(|| {
for year in representative_years() {
let _ = bb(util::weeks_in_year(bb(year)));
}
});
}
}
|