42 lines
1.3 KiB
Rust
42 lines
1.3 KiB
Rust
//! 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();
|
|
}
|
|
}
|