Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Calendar benchmarks #1887

Merged
merged 21 commits into from
Jun 1, 2022
Merged
Changes from 1 commit
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
58b1d0e
Initial drafting of calendar benchmarks
andrewpollack May 16, 2022
a7fcfd8
Extracting tests into external function
andrewpollack May 17, 2022
b568781
Extracting tests into external function
andrewpollack May 17, 2022
c94cb01
Pulled benches into own function
andrewpollack May 17, 2022
4306a93
Adding datetime benches
andrewpollack May 17, 2022
4b9670d
Merge branch 'main' into i/1791/calendar-benches
andrewpollack May 18, 2022
e6695c0
Refactoring code to be more generic
andrewpollack May 18, 2022
621a02d
Adding comments
andrewpollack May 18, 2022
0d92d91
Make outliers into close to generic
andrewpollack May 18, 2022
867003a
Adding nanoseconds to test data
andrewpollack May 18, 2022
3b307fd
Removing nanosecond from ethiopic datetime
andrewpollack May 19, 2022
15ecf15
Removing nano from gregorian datetime creation, new_gregorian_datetim…
andrewpollack May 19, 2022
7b8ecd1
Adding issue link
andrewpollack May 20, 2022
e24613f
Merge branch 'main' into i/1791/calendar-benches
andrewpollack May 20, 2022
3b00440
Merge branch 'main' into i/1791/calendar-benches
andrewpollack May 20, 2022
a01cc2a
Adjusting datetime sample numbers to be coptic friendly
andrewpollack May 20, 2022
734f394
Substituting vector of mutable for mutable array
andrewpollack May 20, 2022
a1da840
PR followups
andrewpollack May 20, 2022
b2ef236
Merge branch 'main' into i/1791/calendar-benches
andrewpollack Jun 1, 2022
b2d12d7
Removing unnecessary comment
andrewpollack Jun 1, 2022
d4256a1
Adjusting ethiopic instantiation
andrewpollack Jun 1, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
115 changes: 39 additions & 76 deletions components/calendar/benches/date.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,27 @@
mod fixtures;

use criterion::{black_box, criterion_group, criterion_main, Criterion};
use icu_calendar::{Date, DateDuration};
use icu_calendar::{AsCalendar, Date, DateDuration};

fn run_calendar_tests<A: AsCalendar>(dates: Vec<&mut Date<A>>) {
for date in dates {
// Arithmetic. black_box used to avoid compiler optimization.
date.add(DateDuration::new(
black_box(1),
black_box(2),
black_box(3),
black_box(4),
));

// Retrieving vals
let _ = date.year().number;
andrewpollack marked this conversation as resolved.
Show resolved Hide resolved
let _ = date.month().number;
let _ = date.day_of_month().0;

// Conversion to ISO.
let _ = date.to_iso();
}
}

fn date_benches(c: &mut Criterion) {
let mut group = c.benchmark_group("date");
Expand All @@ -18,36 +38,21 @@ fn date_benches(c: &mut Criterion) {

b.iter(|| {
for fx in &fxs.0 {
// Instantion
// Instantiation from int
let mut int_instantiated_date_iso =
Date::new_iso_date_from_integers(fx.year, fx.month, fx.day).unwrap();

// Instantion from Iso
let iso_year = IsoYear(fx.year);
let iso_month = IsoMonth::try_from(fx.month).unwrap();
let iso_day = IsoDay::try_from(fx.day).unwrap();
let mut iso_insantiated_date_iso =
Date::new_iso_date(iso_year, iso_month, iso_day).unwrap();
let mut int_instantiated_date_iso =
Date::new_iso_date_from_integers(fx.year, fx.month, fx.day).unwrap();

// Arithmetic. black_box used to avoid compiler optimization.
iso_insantiated_date_iso.add(DateDuration::new(
black_box(1),
black_box(2),
black_box(3),
black_box(4),
));
int_instantiated_date_iso.add(DateDuration::new(
black_box(1),
black_box(2),
black_box(3),
black_box(4),
));

// Retrieving vals
let _ = iso_insantiated_date_iso.year().number;
let _ = iso_insantiated_date_iso.month().number;
let _ = iso_insantiated_date_iso.day_of_month().0;
let _ = int_instantiated_date_iso.year().number;
let _ = int_instantiated_date_iso.month().number;
let _ = int_instantiated_date_iso.day_of_month().0;
run_calendar_tests(vec![
&mut iso_insantiated_date_iso,
&mut int_instantiated_date_iso,
]);
}
})
});
Expand All @@ -58,39 +63,18 @@ fn date_benches(c: &mut Criterion) {

b.iter(|| {
for fx in &fxs.0 {
// Instantion
// Instantion from int
let mut instantiated_date_buddhist =
Date::new_buddhist_date(fx.year, fx.month, fx.day).unwrap();

// Conversion from ISO
let date_iso = Date::new_iso_date_from_integers(fx.year, fx.month, fx.day).unwrap();
let mut converted_date_buddhist = Date::new_from_iso(date_iso, Buddhist);

// Arithmetic. black_box used to avoid compiler optimization.
instantiated_date_buddhist.add(DateDuration::new(
black_box(1),
black_box(2),
black_box(3),
black_box(4),
));
converted_date_buddhist.add(DateDuration::new(
black_box(1),
black_box(2),
black_box(3),
black_box(4),
));

// Retrieving vals
let _ = instantiated_date_buddhist.year().number;
let _ = instantiated_date_buddhist.month().number;
let _ = instantiated_date_buddhist.day_of_month().0;
let _ = converted_date_buddhist.year().number;
let _ = converted_date_buddhist.month().number;
let _ = converted_date_buddhist.day_of_month().0;

// Conversion to ISO.
let _ = instantiated_date_buddhist.to_iso();
let _ = converted_date_buddhist.to_iso();
run_calendar_tests(vec![
&mut instantiated_date_buddhist,
&mut converted_date_buddhist,
]);
}
})
});
Expand All @@ -109,31 +93,10 @@ fn date_benches(c: &mut Criterion) {
let date_iso = Date::new_iso_date_from_integers(fx.year, fx.month, fx.day).unwrap();
let mut converted_date_julian = Date::new_from_iso(date_iso, Julian);

// Arithmetic. black_box used to avoid compiler optimization.
instantiated_date_julian.add(DateDuration::new(
black_box(1),
black_box(2),
black_box(3),
black_box(4),
));
converted_date_julian.add(DateDuration::new(
black_box(1),
black_box(2),
black_box(3),
black_box(4),
));

// Retrieving vals
let _ = instantiated_date_julian.year().number;
let _ = instantiated_date_julian.month().number;
let _ = instantiated_date_julian.day_of_month().0;
let _ = converted_date_julian.year().number;
let _ = converted_date_julian.month().number;
let _ = converted_date_julian.day_of_month().0;

// Conversion to ISO.
let _ = instantiated_date_julian.to_iso();
let _ = converted_date_julian.to_iso();
run_calendar_tests(vec![
&mut instantiated_date_julian,
&mut converted_date_julian,
]);
}
})
});
Expand Down