# Compose bench v2 report from Iris's phone, 2026-09-06 Bench v2 (fling / stream / type / keyboard, RUST.md's P0 box) on the Compose `bench` build, run by Iris on her Pixel 9 Pro XL, verbatim. Note the display was at **60 Hz** for this run (16.7 ms budget) where the v1 run was at 120 Hz -- the phone's adaptive refresh rate decides, and `late` is judged against whichever it was, so compare a run with a run at the same rate. The iris v2 report goes beside this when it exists. What it says: fling, type and keyboard are all essentially clean on Compose (0.1%, 0.9% and 0% late; fling p50 5.5 ms, p99 11.6 ms). The whole tail is the streaming phase again -- 41.9% late, p99 42.5 ms, driven by `markdown reparsed while streaming` (8.6 ms mean, 30.3 ms worst) and `record: one block` (6.3 ms mean, 25.5 ms worst). Process CPU 69.6 s over the 125.5 s run; peak RSS 577 MB; battery current mean 571 mA over 126 samples. ``` ai-app render report device: Pixel 9 Pro XL (Google), Android 17 build: release transcript: 108 events, 26 rows, 58 units loaded viewport 1531px, 2 units visible on screen: the list's own 0px, AssistantMsg 24520px 0 tool calls and 0 groups open per phase: fling: 3278 frames over 32.7s late: 4 (0.1%) total p50 5.5ms p90 8.7ms p99 11.6ms worst 49.0ms stream: 1041 frames over 21.3s late: 436 (41.9%) total p50 13.4ms p90 31.7ms p99 42.5ms worst 52.5ms type: 2446 frames over 61.5s late: 23 (0.9%) total p50 7.3ms p90 13.2ms p99 16.5ms worst 38.9ms keyboard: 358 frames over 10.0s late: 0 (0.0%) total p50 6.3ms p90 8.6ms p99 11.1ms worst 12.0ms frames: 7122 frames over 125.5s at 60Hz (16.7ms budget) late: 463 (6.5%) total p50 6.0ms p90 13.8ms p99 34.0ms waited p50 0.5ms p90 1.1ms p99 19.9ms input p50 0.0ms p90 0.0ms p99 0.0ms anim p50 0.7ms p90 4.5ms p99 7.6ms layout p50 0.1ms p90 0.1ms p99 0.2ms draw p50 0.7ms p90 2.9ms p99 21.9ms sync p50 0.1ms p90 0.2ms p99 0.6ms issue p50 1.4ms p90 2.4ms p99 3.2ms swap p50 0.4ms p90 0.8ms p99 1.2ms gpu p50 1.5ms p90 2.1ms p99 6.6ms where the draw phase went: draw phase 1.74ms per frame, of which: the transcript: 0.24ms (measure 0.10, place 0.14, record 0.00) everything else: 1.51ms (86%) work since this was last copied: draw: the whole transcript: 280, 1.9ms total, 0.0ms mean, 0.0ms worst grouped tool runs: 407, 18.6ms total, 0.0ms mean, 0.2ms worst markdown cut into pieces: 40, 0.4ms total, 0.0ms mean, 0.0ms worst markdown parsed while composing: 2, 1.6ms total, 0.8ms mean, 1.1ms worst markdown ready: 323 markdown reparsed while streaming: 395, 3406.9ms total, 8.6ms mean, 30.3ms worst markdown warmed: 40, 38.2ms total, 1.0ms mean, 4.3ms worst measure: the whole transcript: 1978, 683.9ms total, 0.3ms mean, 15.9ms worst message composed: 397 message cut into parts: 40, 2.9ms total, 0.1ms mean, 0.2ms worst place: the whole transcript: 4308, 996.0ms total, 0.2ms mean, 2.4ms worst record: one block: 394, 2472.7ms total, 6.3ms mean, 25.5ms worst session screen recomposed: 1630 status row recomposed: 1 transcript page from server: 10 unit composed: 927 units flattened: 408, 85.5ms total, 0.2ms mean, 1.8ms worst bench: fling: 8 flings out + 8 back at 12000px/s, travel start=idx=0/off=0px outward=idx=188/off=182px end=idx=0/off=0px scroll: 6 cycles (24 swipes, legacy tween), streamed 400/400 fixture events type: 600 characters inserted then deleted, one per 50ms keyboard: shown 5/5, hidden 5/5 (confirmed via isImeVisible) process CPU time over this run: 69564ms peak RSS: 577452kB battery current: mean -571483µA over 126 samples (min -2361718, max -99218) ```