//! What remapping a subtree costs per frame, as a load for a counter rather //! than a check. A span of 200 fixed-height rows, five primitives each, with //! the row above them changing height every frame, so every row below is //! offered a box the same shape somewhere else. //! //! cargo test --release --test replace_cost -- --ignored //! perf stat -e instructions:u target/release/.../replace_cost-* --ignored //! //! Wall time is the wrong number here; see `draw_cost.rs`. use iris::harness::Harness; use iris::prelude::*; const ROWS: usize = 200; const FRAMES: usize = 200; #[test] #[ignore = "measurement, not a check"] fn remapping_rows_every_frame() { let mut h = Harness::new((1920, 1200)); let first = rect(Color::RED).height(40).add(&mut h.rsc); let mut span = Span::empty(Dir::DOWN); span.push(first.add_strong(&mut h.rsc)); for i in 0..ROWS { let row = ( rect(Color::BLUE.darker(i as f32 / (ROWS * 2) as f32)), rect(Color::GREEN).pad(2), wtext("row").size(16).pad(2), ) .span(Dir::RIGHT) .pad(4) .height(40) .add(&mut h.rsc); span.push(row.add_strong(&mut h.rsc)); } h.set_root(span); for i in 0..FRAMES { h.rsc[first].y = Some(Len::px(40.0 + (i % 2) as f32)); h.frame(); } }