Record PR 19 performance sweep and request invalidation fix

This commit is contained in:
iris-ai committed 2026-09-20 17:32:55 -04:00
1 parent 4c7072e62f
commit 048738bb9d
3 files changed
+137 -5

No files matched your search

+18 -4
View File
@@ -66,10 +66,24 @@ The allocation rig forces every widget to redraw across 100 resize frames:
both the plain and clamped eight-row fixtures allocate zero times after warm-up.
This is a measured property of those stable visible trees, not a guarantee for
arbitrary widgets or visibility changes. An eight-level known nested span paints
its leaf once. The 40-row, 1,000-frame text resize rig costs 9,891,085,554 retired
instructions versus 9,341,015,256 at `de1eb7e` (5.89% more), with the same printed
geometry. Request dependency tracking has a cost even when text still needs
measurement. The 400-tree unbounded cold dump preserves all 34,986 boxes.
its leaf once. Discovery retains dependencies only for requests it actually
uses; discarded discovery leaves dependency tracking to the measured draw.
Used hints still register request readers so a newly added cap reallocates the
parent even when the child's reported share is unchanged.
The performance sweep of 2026-09-20 found and removed an eightfold increase in
the unchanged-paragraph repaint fixture caused by discarded discovery
invalidating its span. The 40-row, 1,000-frame text resize rig now costs 9.432B
retired instructions against 9.340B at `de1eb7e` (+0.99%), down from 9.890B
at `8780b40` (+5.90%). Text draw, line-break and glyph-placement counts agree;
the remaining cost is layout bookkeeping. The width sweep is +1.23%, and
paragraph edits and scrolling are within 0.3% in the measured fixtures.
These are medians of nine process totals, not GPU or phone frame times.
Deep generated trees still have workload-dependent wins and regressions;
`docs/LAYOUT_LOG.md` records the matrix, storage costs and measurement limits.
The 400-tree unbounded cold dump preserves all 34,986 boxes against `de1eb7e`;
the performance correction also preserves all 34,986 bounded boxes against
`8780b40`.
The app's submodule pin is unchanged. This design lives on Iris PR #19.