mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/exe/map.rs')
| -rw-r--r-- | src/exe/map.rs | 43 |
1 files changed, 33 insertions, 10 deletions
diff --git a/src/exe/map.rs b/src/exe/map.rs index c85039d..fb55e07 100644 --- a/src/exe/map.rs +++ b/src/exe/map.rs @@ -1,7 +1,9 @@ +use mindus::data::renderer::warmup; use mindus::data::DataRead; use mindus::{build_registry, Renderable}; use mindus::{MapSerializer, Serializer}; use std::env::Args; +use std::time::Instant; use super::print_err; pub fn main(args: Args) { @@ -9,18 +11,39 @@ pub fn main(args: Args) { let mut ms = MapSerializer(®); // process schematics from command line + println!("starting timing"); + let then = Instant::now(); + warmup(); + let warmup_took = then.elapsed(); for curr in args { - if let Ok(s) = std::fs::read(curr) { - match ms.deserialize(&mut DataRead::new(&s)) { - Err(e) => print_err!(e, "fail"), - Ok(m) => { - let o = m.render(); - if let Ok(v) = std::env::var("SAVE") { - if v == "1" { - o.save("x.png").unwrap(); - } - } + let Ok(s) = std::fs::read(curr) else { + continue; + }; + let starting_deser = Instant::now(); + match ms.deserialize(&mut DataRead::new(&s)) { + Err(e) => print_err!(e, "fail"), + Ok(m) => { + let deser_took = starting_deser.elapsed(); + if let Ok(v) = std::env::var("SAVE") { + if v == "1" { + m.render().save("x.png").unwrap(); + continue; + } } + let starting_render = Instant::now(); + for _ in 0..10 { + m.render(); + } + let renders_took = starting_render.elapsed(); + let took = then.elapsed(); + println!( + "μ total: {:.2}s (10 runs) (deser: {}ms, warmup: {}ms, render: {:.2}s) on map {}", + took.as_secs_f32() / 10., + deser_took.as_millis(), + warmup_took.as_millis(), + renders_took.as_secs_f32() / 10., + m.tags.get("mapname").unwrap(), + ); } } } |