use std::hint::black_box; use std::time::SystemTime;
use criterion::Bencher; use time::ext::{NumericalDuration, NumericalStdDuration}; use time::macros::{date, datetime, offset, time}; use time::OffsetDateTime;
fn std_sub(ben: &mut Bencher<'_>) { let a = SystemTime::from(datetime!(2019-01-020:00 UTC)); let b = SystemTime::from(datetime!(2019-01-010:00 UTC)); let c = SystemTime::from(datetime!(2020-01-010:00 UTC)); let d = SystemTime::from(datetime!(2019-12-310:00 UTC));
ben.iter(|| a - datetime!(2019-01-010:00 UTC));
ben.iter(|| b - datetime!(2019-01-020:00 UTC));
ben.iter(|| c - datetime!(2019-12-310:00 UTC));
ben.iter(|| d - datetime!(2020-01-010:00 UTC));
}
fn sub_std(ben: &mut Bencher<'_>) { let a = SystemTime::from(datetime!(2019-01-010:00 UTC)); let b = SystemTime::from(datetime!(2019-01-020:00 UTC)); let c = SystemTime::from(datetime!(2019-12-310:00 UTC)); let d = SystemTime::from(datetime!(2020-01-010:00 UTC));
fn eq_std(ben: &mut Bencher<'_>) { let a = OffsetDateTime::now_utc(); let b = SystemTime::from(a);
ben.iter(|| a == b);
}
fn std_eq(ben: &mut Bencher<'_>) { let a = OffsetDateTime::now_utc(); let b = SystemTime::from(a);
ben.iter(|| b == a);
}
fn ord_std(ben: &mut Bencher<'_>) { let a = SystemTime::from(datetime!(2019-01-010:00 UTC)); let b = SystemTime::from(datetime!(2020-01-010:00 UTC)); let c = SystemTime::from(datetime!(2019-02-010:00 UTC)); let d = SystemTime::from(datetime!(2019-01-020:00 UTC)); let e = SystemTime::from(datetime!(2019-01-011:00:00 UTC)); let f = SystemTime::from(datetime!(2019-01-010:01:00 UTC)); let g = SystemTime::from(datetime!(2019-01-010:00:01 UTC)); let h = SystemTime::from(datetime!(2019-01-010:00:00.001 UTC)); let i = SystemTime::from(datetime!(2019-01-010:00 UTC)); let j = SystemTime::from(datetime!(2019-01-010:00 UTC)); let k = SystemTime::from(datetime!(2019-01-010:00 UTC)); let l = SystemTime::from(datetime!(2019-01-010:00 UTC)); let m = SystemTime::from(datetime!(2019-01-010:00 UTC)); let n = SystemTime::from(datetime!(2019-01-010:00 UTC)); let o = SystemTime::from(datetime!(2019-01-010:00 UTC));
fn std_ord(ben: &mut Bencher<'_>) { let a = SystemTime::from(datetime!(2019-01-010:00 UTC)); let b = SystemTime::from(datetime!(2019-01-010:00 UTC)); let c = SystemTime::from(datetime!(2019-01-010:00 UTC)); let d = SystemTime::from(datetime!(2019-01-010:00 UTC)); let e = SystemTime::from(datetime!(2019-01-010:00 UTC)); let f = SystemTime::from(datetime!(2019-01-010:00 UTC)); let g = SystemTime::from(datetime!(2019-01-010:00 UTC)); let h = SystemTime::from(datetime!(2019-01-010:00 UTC)); let i = SystemTime::from(datetime!(2020-01-010:00 UTC)); let j = SystemTime::from(datetime!(2019-02-010:00 UTC)); let k = SystemTime::from(datetime!(2019-01-020:00 UTC)); let l = SystemTime::from(datetime!(2019-01-011:00:00 UTC)); let m = SystemTime::from(datetime!(2019-01-010:01:00 UTC)); let n = SystemTime::from(datetime!(2019-01-010:00:01 UTC)); let o = SystemTime::from(datetime!(2019-01-010:00:00.001 UTC));
ben.iter(|| a == datetime!(2019-01-010:00 UTC));
ben.iter(|| b < datetime!(2020-01-010:00 UTC));
ben.iter(|| c < datetime!(2019-02-010:00 UTC));
ben.iter(|| d < datetime!(2019-01-020:00 UTC));
ben.iter(|| e < datetime!(2019-01-011:00:00 UTC));
ben.iter(|| f < datetime!(2019-01-010:01:00 UTC));
ben.iter(|| g < datetime!(2019-01-010:00:01 UTC));
ben.iter(|| h < datetime!(2019-01-010:00:00.000_000_001 UTC));
ben.iter(|| i > datetime!(2019-01-010:00 UTC));
ben.iter(|| j > datetime!(2019-01-010:00 UTC));
ben.iter(|| k > datetime!(2019-01-010:00 UTC));
ben.iter(|| l > datetime!(2019-01-010:00 UTC));
ben.iter(|| m > datetime!(2019-01-010:00 UTC));
ben.iter(|| n > datetime!(2019-01-010:00 UTC));
ben.iter(|| o > datetime!(2019-01-010:00 UTC));
}
fn from_std(ben: &mut Bencher<'_>) { let a = SystemTime::UNIX_EPOCH; let b = SystemTime::UNIX_EPOCH - 1.std_days(); let c = SystemTime::UNIX_EPOCH + 1.std_days();
ben.iter(|| OffsetDateTime::from(a));
ben.iter(|| OffsetDateTime::from(b));
ben.iter(|| OffsetDateTime::from(c));
}
fn to_std(ben: &mut Bencher<'_>) { let a = OffsetDateTime::UNIX_EPOCH; let b = OffsetDateTime::UNIX_EPOCH + 1.days(); let c = OffsetDateTime::UNIX_EPOCH - 1.days();
ben.iter(|| SystemTime::from(a));
ben.iter(|| SystemTime::from(b));
ben.iter(|| SystemTime::from(c));
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.