Files
ai-app/docs/bench/compose-phone-v2-2026-09-06.md

3.7 KiB

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)