docs: record final phone benchmark comparison
This commit is contained in:
1 parent
4bc23172fd
commit
8c6e2ed9cf
2 files changed
+172
No files matched your search
@@ -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)
|
||||
```
|
||||
@@ -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)
|
||||
```
|
||||
Reference in new issue
Block a user