77 lines
3.5 KiB
Markdown
77 lines
3.5 KiB
Markdown
# 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)
|
|
```
|