use simple_datetime_rs::{Date, DateTime, Time};
use std::time::Instant;
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Performance Demo - simple-datetime-rs");
println!("=====================================");
let start = Instant::now();
for _ in 0..100_000 {
let _: Date = "2023-06-15".parse()?;
}
let duration = start.elapsed();
println!(
"100,000 date parses: {:?} ({:.2}ns per parse)",
duration,
duration.as_nanos() as f64 / 100_000.0
);
let start = Instant::now();
for _ in 0..100_000 {
let _: Time = "14:30:45.123456".parse()?;
}
let duration = start.elapsed();
println!(
"100,000 time parses: {:?} ({:.2}ns per parse)",
duration,
duration.as_nanos() as f64 / 100_000.0
);
let start = Instant::now();
for _ in 0..100_000 {
let _: DateTime = "2023-06-15T14:30:45Z".parse()?;
}
let duration = start.elapsed();
println!(
"100,000 datetime parses: {:?} ({:.2}ns per parse)",
duration,
duration.as_nanos() as f64 / 100_000.0
);
let date = Date::new(2023, 6, 15);
let start = Instant::now();
for _ in 0..1_000_000 {
let _ = date.add_days(30);
}
let duration = start.elapsed();
println!(
"1,000,000 add_days operations: {:?} ({:.2}ns per operation)",
duration,
duration.as_nanos() as f64 / 1_000_000.0
);
let start = Instant::now();
let mut dates = Vec::with_capacity(1000);
for i in 0..1000 {
dates.push(Date::new(2023, 6, 15 + i % 30));
}
let duration = start.elapsed();
println!(
"Created 1,000 Date objects: {:?} ({:.2}ns per object)",
duration,
duration.as_nanos() as f64 / 1000.0
);
println!(
"\nMemory usage: {} bytes for 1,000 Date objects",
std::mem::size_of::<Date>() * 1000
);
Ok(())
}