use std::io;
use criterion::Bencher;
use time::format_description;
use time::format_description::well_known::{Rfc2822, Rfc3339};
use time::macros::{date, datetime, format_description as fd, offset, time};
setup_benchmark! {
"Formatting" ,
fn format_rfc3339(ben: &mut Bencher<'_>) {
macro_rules! item {
($value:expr) => {
$value.format_into(&mut io::sink(), &Rfc3339)
}
}
ben.iter(|| item!(datetime!(2021 -01 -02 03 :04 :05 UTC)));
ben.iter(|| item!(datetime!(2021 -01 -02 03 :04 :05 .1 UTC)));
ben.iter(|| item!(datetime!(2021 -01 -02 03 :04 :05 .12 UTC)));
ben.iter(|| item!(datetime!(2021 -01 -02 03 :04 :05 .123 UTC)));
ben.iter(|| item!(datetime!(2021 -01 -02 03 :04 :05 .123 _4 UTC)));
ben.iter(|| item!(datetime!(2021 -01 -02 03 :04 :05 .123 _45 UTC)));
ben.iter(|| item!(datetime!(2021 -01 -02 03 :04 :05 .123 _456 UTC)));
ben.iter(|| item!(datetime!(2021 -01 -02 03 :04 :05 .123 _456 _7 UTC)));
ben.iter(|| item!(datetime!(2021 -01 -02 03 :04 :05 .123 _456 _78 UTC)));
ben.iter(|| item!(datetime!(2021 -01 -02 03 :04 :05 .123 _456 _789 UTC)));
ben.iter(|| item!(datetime!(2021 -01 -02 03 :04 :05 .123 _456 _789 -01 :02 )));
ben.iter(|| item!(datetime!(2021 -01 -02 03 :04 :05 .123 _456 _789 +01 :02 )));
}
fn format_rfc2822(ben: &mut Bencher<'_>) {
macro_rules! item {
($value:expr) => {
$value.format_into(&mut io::sink(), &Rfc2822)
}
}
ben.iter(|| item!(datetime!(2021 -01 -02 03 :04 :05 UTC)));
ben.iter(|| item!(datetime!(2021 -01 -02 03 :04 :05 +06 :07 )));
ben.iter(|| item!(datetime!(2021 -01 -02 03 :04 :05 -06 :07 )));
}
fn format_time(ben: &mut Bencher<'_>) {
macro_rules! item {
($format:expr) => {
time!(13 :02 :03 .456 _789 _012 ).format_into(
&mut io::sink(),
&$format,
)
}
}
ben.iter(|| item!(fd!("[hour]" )));
ben.iter(|| item!(fd!("[hour repr:12]" )));
ben.iter(|| item!(fd!("[hour repr:12 padding:none]" )));
ben.iter(|| item!(fd!("[hour repr:12 padding:space]" )));
ben.iter(|| item!(fd!("[hour repr:24]" )));
ben.iter(|| item!(fd!("[hour repr:24]" )));
ben.iter(|| item!(fd!("[hour repr:24 padding:none]" )));
ben.iter(|| item!(fd!("[hour repr:24 padding:space]" )));
ben.iter(|| item!(fd!("[minute]" )));
ben.iter(|| item!(fd!("[minute padding:none]" )));
ben.iter(|| item!(fd!("[minute padding:space]" )));
ben.iter(|| item!(fd!("[minute padding:zero]" )));
ben.iter(|| item!(fd!("[period]" )));
ben.iter(|| item!(fd!("[period case:upper]" )));
ben.iter(|| item!(fd!("[period case:lower]" )));
ben.iter(|| item!(fd!("[second]" )));
ben.iter(|| item!(fd!("[second padding:none]" )));
ben.iter(|| item!(fd!("[second padding:space]" )));
ben.iter(|| item!(fd!("[second padding:zero]" )));
ben.iter(|| item!(fd!("[subsecond]" )));
ben.iter(|| item!(fd!("[subsecond digits:1]" )));
ben.iter(|| item!(fd!("[subsecond digits:2]" )));
ben.iter(|| item!(fd!("[subsecond digits:3]" )));
ben.iter(|| item!(fd!("[subsecond digits:4]" )));
ben.iter(|| item!(fd!("[subsecond digits:5]" )));
ben.iter(|| item!(fd!("[subsecond digits:6]" )));
ben.iter(|| item!(fd!("[subsecond digits:7]" )));
ben.iter(|| item!(fd!("[subsecond digits:8]" )));
ben.iter(|| item!(fd!("[subsecond digits:9]" )));
ben.iter(|| item!(fd!("[subsecond digits:1+]" )));
}
fn display_time(ben: &mut Bencher<'_>) {
ben.iter(|| time!(0 :00 ).to_string());
ben.iter(|| time!(23 :59 ).to_string());
ben.iter(|| time!(23 :59 :59 ).to_string());
ben.iter(|| time!(0 :00 :01 ).to_string());
ben.iter(|| time!(0 :00 :00 .001 ).to_string());
ben.iter(|| time!(0 :00 :00 .000 _001 ).to_string());
ben.iter(|| time!(0 :00 :00 .000 _000 _001 ).to_string());
}
fn format_date(ben: &mut Bencher<'_>) {
macro_rules! item {
($format:expr) => {
date!(2019 -12 -31 ).format_into(&mut io::sink(), &$format)
}
}
ben.iter(|| item!(fd!("[day]" )));
ben.iter(|| item!(fd!("[month]" )));
ben.iter(|| item!(fd!("[month repr:short]" )));
ben.iter(|| item!(fd!("[month repr:long]" )));
ben.iter(|| item!(fd!("[ordinal]" )));
ben.iter(|| item!(fd!("[weekday]" )));
ben.iter(|| item!(fd!("[weekday repr:short]" )));
ben.iter(|| item!(fd!("[weekday repr:sunday]" )));
ben.iter(|| item!(fd!("[weekday repr:sunday one_indexed:false]" )));
ben.iter(|| item!(fd!("[weekday repr:monday]" )));
ben.iter(|| item!(fd!("[weekday repr:monday one_indexed:false]" )));
ben.iter(|| item!(fd!("[week_number]" )));
ben.iter(|| item!(fd!("[week_number padding:none]" )));
ben.iter(|| item!(fd!("[week_number padding:space]" )));
ben.iter(|| item!(fd!("[week_number repr:sunday]" )));
ben.iter(|| item!(fd!("[week_number repr:monday]" )));
ben.iter(|| item!(fd!("[year]" )));
ben.iter(|| item!(fd!("[year base:iso_week]" )));
ben.iter(|| item!(fd!("[year sign:mandatory]" )));
ben.iter(|| item!(fd!("[year base:iso_week sign:mandatory]" )));
ben.iter(|| item!(fd!("[year repr:last_two]" )));
ben.iter(|| item!(fd!("[year base:iso_week repr:last_two]" )));
}
fn display_date(ben: &mut Bencher<'_>) {
ben.iter(|| date!(2019 -01 -01 ).to_string());
ben.iter(|| date!(2019 -12 -31 ).to_string());
ben.iter(|| date!(-4713 -11 -24 ).to_string());
ben.iter(|| date!(-0001 -01 -01 ).to_string());
}
fn format_offset(ben: &mut Bencher<'_>) {
macro_rules! item {
($value:expr, $format:expr) => {
$value.format_into(&mut io::sink(), &$format)
}
}
ben.iter(|| item!(offset!(+01 :02 :03 ), fd!("[offset_hour sign:automatic]" )));
ben.iter(|| item!(offset!(+01 :02 :03 ), fd!("[offset_hour sign:mandatory]" )));
ben.iter(|| item!(offset!(-01 :02 :03 ), fd!("[offset_hour sign:automatic]" )));
ben.iter(|| item!(offset!(-01 :02 :03 ), fd!("[offset_hour sign:mandatory]" )));
ben.iter(|| item!(offset!(+01 :02 :03 ), fd!("[offset_minute]" )));
ben.iter(|| item!(offset!(+01 :02 :03 ), fd!("[offset_second]" )));
}
fn display_offset(ben: &mut Bencher<'_>) {
ben.iter(|| offset!(UTC).to_string());
ben.iter(|| offset!(+0 :00 :01 ).to_string());
ben.iter(|| offset!(-0 :00 :01 ).to_string());
ben.iter(|| offset!(+1 ).to_string());
ben.iter(|| offset!(-1 ).to_string());
ben.iter(|| offset!(+23 :59 ).to_string());
ben.iter(|| offset!(-23 :59 ).to_string());
ben.iter(|| offset!(+23 :59 :59 ).to_string());
ben.iter(|| offset!(-23 :59 :59 ).to_string());
}
fn format_pdt(ben: &mut Bencher<'_>) {
ben.iter(|| {
datetime!(1970 -01 -01 0 :00 ).format_into(
&mut io::sink(),
fd!("[year]-[month]-[day] [hour]:[minute]:[second].[subsecond]" ),
)
});
}
fn display_pdt(ben: &mut Bencher<'_>) {
ben.iter(|| datetime!(1970 -01 -01 0 :00 ).to_string());
ben.iter(|| datetime!(1970 -01 -01 0 :00 :01 ).to_string());
}
fn format_odt(ben: &mut Bencher<'_>) {
let format_description = format_description::parse(
"[year]-[month]-[day] [hour]:[minute]:[second].[subsecond] [offset_hour \
sign:mandatory]:[offset_minute]:[offset_second]",
).expect("invalid format description" );
ben.iter(|| {
datetime!(1970 -01 -01 0 :00 UTC).format_into(&mut io::sink(), &format_description)
});
}
fn display_odt(ben: &mut Bencher<'_>) {
ben.iter(|| datetime!(1970 -01 -01 0 :00 UTC).to_string());
}
}
Messung V0.5 in Prozent C=92 H=100 G=95
¤ 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.0.14Bemerkung:
(vorverarbeitet am 2026-08-27)
¤
*© Formatika GbR, Deutschland