docs: record final phone benchmark comparison

This commit is contained in:
iris committed 2026-09-09 22:57:50 -04:00
1 parent 4bc23172fd
commit 8c6e2ed9cf
2 files changed
+172

No files matched your search

+96
View File
@@ -0,0 +1,96 @@
# Compose phone bench v3, 2026-09-09
Fresh release run on Iris's Pixel 9 Pro XL, kept as the Compose comparison
for `iris-phone-v3-2026-09-09.md`. The report says **60 Hz** and therefore
judges `late` against a 16.7 ms budget, but Iris observed what looked like
120 Hz. The fling count supports that observation: after subtracting the
sixteen deliberate 300 ms rests, 3,279 frames over 27.9 seconds is about
118 fps. Android's adaptive-refresh query has previously returned 60 Hz
during a run that actually sustained 120 Hz; unlike the corrected iris
reporter, this Compose reporter does not resolve the platform answer against
the measured cadence. Treat the physical display rate as likely 120 Hz but
the printed `late` figures as calculated at 60 Hz, and compare millisecond
percentiles rather than the two apps' `late` percentages.
This reproduces the 2026-09-06 Compose v2 result closely. Streaming remains
the long tail: 43.3% late, p50 13.8 ms and p99 42.6 ms. The counters below
attribute it primarily to reparsing markdown while streaming (8.6 ms mean)
and recording the changed block (6.3 ms mean). Fling, typing and keyboard
remain clean at the reporter's 60 Hz budget.
```text
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: 3279 frames over 32.7s
late: 4 (0.1%)
total p50 5.5ms p90 7.1ms p99 11.4ms
worst 30.9ms
stream: 1041 frames over 21.6s
late: 451 (43.3%)
total p50 13.8ms p90 32.1ms p99 42.6ms
worst 58.5ms
type: 2444 frames over 61.5s
late: 29 (1.2%)
total p50 7.2ms p90 13.4ms p99 16.8ms
worst 32.9ms
keyboard: 359 frames over 10.1s
late: 1 (0.3%)
total p50 6.2ms p90 7.7ms p99 10.5ms
worst 16.7ms
frames:
7122 frames over 125.8s at 60Hz (16.7ms budget)
late: 485 (6.8%)
total p50 6.0ms p90 13.9ms p99 34.0ms
waited p50 0.5ms p90 1.2ms p99 20.9ms
input p50 0.0ms p90 0.0ms p99 0.0ms
anim p50 0.7ms p90 4.6ms p99 7.8ms
layout p50 0.1ms p90 0.1ms p99 0.2ms
draw p50 0.7ms p90 2.9ms p99 22.6ms
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.49ms (85%)
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.4ms 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, 3417.3ms total, 8.6ms mean, 29.3ms worst
markdown warmed: 40, 39.3ms total, 1.0ms mean, 4.2ms worst
measure: the whole transcript: 1977, 683.5ms total, 0.3ms mean, 13.7ms worst
message composed: 397
message cut into parts: 40, 3.0ms total, 0.1ms mean, 0.2ms worst
place: the whole transcript: 4306, 1003.1ms total, 0.2ms mean, 4.2ms worst
record: one block: 394, 2473.7ms total, 6.3ms mean, 25.1ms worst
session screen recomposed: 1631
status row recomposed: 1
transcript page from server: 10
unit composed: 927
units flattened: 408, 85.9ms total, 0.2ms mean, 2.0ms 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: 70502ms
peak RSS: 581084kB
battery current: mean -591350µA over 126 samples (min -2271093, max -99218)
```
+76
View File
@@ -0,0 +1,76 @@
# iris phone bench v3, 2026-09-09
Fresh release run on Iris's Pixel 9 Pro XL after the frame-report corrections,
realistic streamed blocks, retained arena uploads and fling-clock fix. Iris
reported that everything was visually working as intended. This run is paired
with `compose-phone-v3-2026-09-09.md`.
The iris reporter resolved the phone at **120 Hz** (8.3 ms budget). The paired
Compose report says 60 Hz, but Iris observed what looked like 120 Hz and its
fling count works out to about 118 fps after the benchmark's deliberate rests
are removed. Compose nevertheless calculated `late` using its reported 60 Hz
and 16.7 ms budget, so the two apps' `late` percentages are not directly
comparable. Against the real 8.3 ms budget, iris recorded 0.5% late frames
overall. Streaming had no late frames or missed vsyncs, with p50 3.1 ms and
p99 5.0 ms, against Compose's p50 13.8 ms and p99 42.6 ms. The five missed
vsyncs in the fling phase are 0.15% of its 3,409 frames; Iris could not see lag
in the finished UI.
Across the similarly long complete runs, iris used 37.5 seconds of process CPU
against Compose's 70.5 seconds (47% less) and peaked at 382,796 kB RSS against
581,084 kB (34% less). Mean battery current was 226 mA against Compose's 591
mA; that is encouraging but remains a device-state-sensitive reading rather
than a controlled energy measurement.
The keyboard line does **not** describe a failed opening. The type phase opens
the IME and leaves it visible. The keyboard phase's first `show_ime` is
therefore a no-op rather than a new hidden-to-visible transition; it then
observes five hides and four reopens. Including the opening in the type phase,
the complete run observed five openings and five closings.
`acquire` is the wait for a swapchain image, not iris's own work. In particular,
the fling's 8.0 ms total median consists mostly of a healthy 6.0 ms acquire
wait; its median build work is 0.4 ms. `late` is judged on work with that
acquire wait removed.
```text
iris bench report
input/frame trace: off
per phase:
fling: 3409 frames over 33.2s
late: 11 (0.3%) missed vsyncs: 5
total p50 8.0ms p90 9.0ms p99 10.5ms
build p50 0.4ms acquire p50 6.0ms submit p50 1.6ms
worst 17.4ms
stream: 401 frames over 21.3s
late: 0 (0.0%) missed vsyncs: 0
total p50 3.1ms p90 4.0ms p99 5.0ms
build p50 1.1ms acquire p50 0.3ms submit p50 1.6ms
worst 7.0ms
type: 1240 frames over 64.5s
late: 14 (1.1%) missed vsyncs: 0
total p50 5.6ms p90 6.8ms p99 9.1ms
build p50 2.5ms acquire p50 0.4ms submit p50 2.6ms
worst 12.8ms
keyboard: 341 frames over 9.8s
late: 0 (0.0%) missed vsyncs: 0
total p50 2.1ms p90 2.8ms p99 4.5ms
build p50 0.3ms acquire p50 0.2ms submit p50 1.5ms
worst 8.5ms
frames:
5391 frames over 128.8s at 120Hz (as the display reports it; drew 120fps) (8.3ms budget)
late: 25 (0.5%)
total p50 7.5ms p90 8.8ms p99 10.2ms
worst 17.4ms
build_p50 0.4ms acquire_p50 5.3ms submit_p50 1.7ms
bench:
fling: 8 flings out + 8 back at 12000px/s, travel start=idx=653/off=1557px outward=idx=528/off=909px end=idx=650/off=-103px ticked=frame-loop
scroll: 6 cycles (24 swipes, legacy tween), streamed 400/400 fixture events
type: 600 characters inserted then deleted, one per 50ms
keyboard: shown 4/5, hidden 5/5 (confirmed via on_insets_changed)
process CPU time over this run: 37457ms
peak RSS: 382796kB
battery current: mean -226354µA over 128 samples (min -404687, max -107812)
```