Finish moving all benchmarks to criterion
I didn't delete some, apparently, and an internal struct had to be made public to get its benchmark to work.
This commit is contained in:
parent
b553798f86
commit
4f1c35827f
|
@ -29,7 +29,7 @@ alloc = []
|
|||
std = []
|
||||
clock = ["time", "std"]
|
||||
wasmbind = ["wasm-bindgen", "js-sys"]
|
||||
bench = ["std"]
|
||||
__internal_bench = []
|
||||
|
||||
[dependencies]
|
||||
time = { version = "0.1.39", optional = true }
|
||||
|
@ -60,7 +60,8 @@ all-features = true
|
|||
all-features = true
|
||||
|
||||
[[bench]]
|
||||
name = "parsing"
|
||||
name = "chrono"
|
||||
required-features = ["__internal_bench"]
|
||||
harness = false
|
||||
|
||||
[[bench]]
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
//! Benchmarks for chrono that just depend on std
|
||||
|
||||
extern crate chrono;
|
||||
extern crate criterion;
|
||||
|
||||
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
||||
|
||||
use chrono::prelude::*;
|
||||
use chrono::{Utc, FixedOffset, DateTime};
|
||||
use chrono::{Utc, FixedOffset, DateTime, YearFlags};
|
||||
|
||||
fn bench_datetime_parse_from_rfc2822(c: &mut Criterion) {
|
||||
c.bench_function("bench_datetime_parse_from_rfc2822", |b| {
|
||||
|
@ -50,13 +52,23 @@ fn bench_datetime_to_rfc3339(c: &mut Criterion) {
|
|||
});
|
||||
}
|
||||
|
||||
fn bench_year_flags_from_year(c: &mut Criterion) {
|
||||
c.bench_function("bench_year_flags_from_year", |b|
|
||||
b.iter(|| {
|
||||
for year in -999i32..1000 {
|
||||
YearFlags::from_year(year);
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
criterion_group!(
|
||||
benches,
|
||||
bench_datetime_parse_from_rfc2822,
|
||||
bench_datetime_parse_from_rfc3339,
|
||||
bench_datetime_from_str,
|
||||
bench_datetime_to_rfc2822,
|
||||
bench_datetime_to_rfc3339
|
||||
bench_datetime_to_rfc3339,
|
||||
bench_year_flags_from_year,
|
||||
);
|
||||
|
||||
criterion_main!(benches);
|
|
@ -2217,52 +2217,4 @@ mod tests {
|
|||
assert_eq!(format!(" {} ", ymd_formatted), format!("{:^17}", ymd));
|
||||
}
|
||||
|
||||
#[cfg(feature = "bench")]
|
||||
#[bench]
|
||||
fn bench_datetime_parse_from_rfc2822(bh: &mut test::Bencher) {
|
||||
bh.iter(|| {
|
||||
let str = test::black_box("Wed, 18 Feb 2015 23:16:09 +0000");
|
||||
DateTime::parse_from_rfc2822(str).unwrap()
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(feature = "bench")]
|
||||
#[bench]
|
||||
fn bench_datetime_parse_from_rfc3339(bh: &mut test::Bencher) {
|
||||
bh.iter(|| {
|
||||
let str = test::black_box("2015-02-18T23:59:60.234567+05:00");
|
||||
DateTime::parse_from_rfc3339(str).unwrap()
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(feature = "bench")]
|
||||
#[bench]
|
||||
fn bench_datetime_from_str(bh: &mut test::Bencher) {
|
||||
use std::str::FromStr;
|
||||
|
||||
bh.iter(|| {
|
||||
let str = test::black_box("2019-03-30T18:46:57.193Z");
|
||||
DateTime::<Utc>::from_str(str).unwrap()
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(feature = "bench")]
|
||||
#[bench]
|
||||
fn bench_datetime_to_rfc2822(bh: &mut test::Bencher) {
|
||||
let pst = FixedOffset::east(8 * 60 * 60);
|
||||
let dt = pst.ymd(2018, 1, 11).and_hms_nano(10, 5, 13, 084_660_000);
|
||||
bh.iter(|| {
|
||||
test::black_box(dt).to_rfc2822()
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(feature = "bench")]
|
||||
#[bench]
|
||||
fn bench_datetime_to_rfc3339(bh: &mut test::Bencher) {
|
||||
let pst = FixedOffset::east(8 * 60 * 60);
|
||||
let dt = pst.ymd(2018, 1, 11).and_hms_nano(10, 5, 13, 084_660_000);
|
||||
bh.iter(|| {
|
||||
test::black_box(dt).to_rfc3339()
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -477,7 +477,10 @@ pub mod naive {
|
|||
//! (e.g. [`TimeZone`](../offset/trait.TimeZone.html)),
|
||||
//! but can be also used for the simpler date and time handling.
|
||||
|
||||
#[cfg(not(feature = "__internal_bench"))]
|
||||
mod internals;
|
||||
#[cfg(feature = "__internal_bench")]
|
||||
pub mod internals;
|
||||
mod date;
|
||||
mod isoweek;
|
||||
mod time;
|
||||
|
@ -510,6 +513,9 @@ mod datetime;
|
|||
pub mod format;
|
||||
mod round;
|
||||
|
||||
#[cfg(feature = "__internal_bench")]
|
||||
pub use naive::internals::YearFlags;
|
||||
|
||||
/// Serialization/Deserialization in alternate formats
|
||||
///
|
||||
/// The various modules in here are intended to be used with serde's [`with`
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
//! so that the user-facing `NaiveDate` can validate the input as late as possible.
|
||||
|
||||
#![allow(dead_code)] // some internal methods have been left for consistency
|
||||
#![cfg_attr(feature = "__internal_bench", allow(missing_docs))]
|
||||
|
||||
use core::{i32, fmt};
|
||||
use num_traits::FromPrimitive;
|
||||
|
@ -516,16 +517,6 @@ mod tests {
|
|||
assert_eq!(GF.nisoweeks(), 52);
|
||||
}
|
||||
|
||||
#[cfg(feature = "bench")]
|
||||
#[bench]
|
||||
fn bench_year_flags_from_year(bh: &mut test::Bencher) {
|
||||
bh.iter(|| {
|
||||
for year in -999i32..1000 {
|
||||
YearFlags::from_year(year);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_of() {
|
||||
fn check(expected: bool, flags: YearFlags, ordinal1: u32, ordinal2: u32) {
|
||||
|
|
Loading…
Reference in New Issue