From 2aaa3733c3a426c6045a75d366a249756f7f3089 Mon Sep 17 00:00:00 2001 From: iris <2+iris@noreply.localhost> Date: Sat, 5 Sep 2026 23:20:05 -0400 Subject: [PATCH] docs/bench: the Compose P0 report from Iris's phone, verbatim Co-Authored-By: Claude Fable 5.1 --- docs/bench/compose-phone-2026-09-06.md | 73 ++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 docs/bench/compose-phone-2026-09-06.md diff --git a/docs/bench/compose-phone-2026-09-06.md b/docs/bench/compose-phone-2026-09-06.md new file mode 100644 index 0000000..02103d9 --- /dev/null +++ b/docs/bench/compose-phone-2026-09-06.md @@ -0,0 +1,73 @@ +# 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) +```