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

3.1 KiB

Compose bench report from Iris's phone, 2026-09-06

The Compose half of P0 (RUST.md), run by Iris on her own phone and pasted back verbatim. The iris half's report goes beside it in this directory when it exists. Her caveat, worth keeping with the numbers: "I don't think this is entirely fair because the UI for iris is more minimal" -- the Compose screen also draws the usage bar, the status row and tool cards, which the iris bench screen does not yet. Her impression of the iris build before its first-touch bug: "it already feels very smooth so far".

What to read first: the phone runs at 120 Hz, so the budget is 8.3 ms; late is measured against that. Compose's tail is the streaming phase -- markdown reparsed while streaming: 396, 8.5ms mean, 25.8ms worst and record: one block: 398, 6.3ms mean, 19.9ms worst -- which is exactly the path iris's TranscriptScreen::apply (replace the last row only) is meant to beat. Process CPU over the run is 20.9 s of a 38.5 s run; peak RSS 587 MB; battery current mean 419 mA.

ai-app render report
device: Pixel 9 Pro XL (Google), Android 17
build: release

transcript:
  43 events, 41 rows, 93 units loaded
  viewport 1333px, 2 units visible
  on screen: the list's own 0px, AssistantMsg 24520px
  0 tool calls and 0 groups open

frames:
  1613 frames over 38.5s at 120Hz (8.3ms budget)
  late: 742 (46.0%)
  total  p50 7.7ms  p90 29.2ms  p99 41.1ms
  waited p50 0.5ms  p90 12.9ms  p99 27.2ms
  input  p50 0.0ms  p90 0.0ms  p99 0.0ms
  anim   p50 1.1ms  p90 5.8ms  p99 9.5ms
  layout p50 0.0ms  p90 0.1ms  p99 0.2ms
  draw   p50 0.4ms  p90 15.9ms  p99 27.9ms
  sync   p50 0.1ms  p90 0.5ms  p99 1.0ms
  issue  p50 1.1ms  p90 1.7ms  p99 3.0ms
  swap   p50 0.4ms  p90 0.5ms  p99 0.7ms
  gpu    p50 1.8ms  p90 2.1ms  p99 6.6ms

where the draw phase went:
  draw phase 3.83ms per frame, of which:
    the transcript: 0.25ms (measure 0.15, place 0.10, record 0.00)
    everything else: 3.58ms (93%)

work since this was last copied:
  draw: the whole transcript: 12, 0.2ms total, 0.0ms mean, 0.0ms worst
  grouped tool runs: 398, 10.3ms total, 0.0ms mean, 0.1ms worst
  markdown cut into pieces: 1, 0.0ms total, 0.0ms mean, 0.0ms worst
  markdown parsed while composing: 7, 3.0ms total, 0.4ms mean, 0.5ms worst
  markdown ready: 46
  markdown reparsed while streaming: 396, 3384.6ms total, 8.5ms mean, 25.8ms worst
  markdown warmed: 1, 1.4ms total, 1.4ms mean, 1.4ms worst
  measure: the whole transcript: 957, 248.7ms total, 0.3ms mean, 15.7ms worst
  message composed: 403
  message cut into parts: 1, 0.1ms total, 0.1ms mean, 0.1ms worst
  place: the whole transcript: 1319, 162.4ms total, 0.1ms mean, 1.3ms worst
  record: one block: 398, 2498.7ms total, 6.3ms mean, 19.9ms worst
  session screen recomposed: 413
  status row recomposed: 1
  unit composed: 538
  units flattened: 399, 44.3ms total, 0.1ms mean, 0.5ms worst
  usage bar recomposed: 413

bench:
  scroll: 6 cycles (24 swipes), streamed 400/400 fixture events
  process CPU time over this run: 20907ms
  peak RSS: 587356kB
  battery current: mean -418509µA over 39 samples (min -1988281, max -107812)