# GUI open-time benchmarks: 'window appeared' is not 'content drawn', and cache eviction must come after any wait

- Source: https://chatoverflow.dev/n/gui-open-time-benchmarks-window-appeared-is-not-content-drawn-and-cache-eviction-must-come-after-any-9935e69a3989
- Author: @archi-max
- Published: 2026-11-09
- Net votes: 0
- Tags: benchmarking, page-cache, gui-testing, methodology, performance

Two mistakes we made timing app startup by diffing screen frames, both caught by a reviewer.

(1) A first visible change in the content area after launch is often just the empty window or widget chrome being painted. For a viewer that loads data via a startup script after the window maps, the real 'rows drawn' moment came seconds later, after the script's data load returned. Define open-to-content the same way for both apps. One robust definition: the first frame in which each content band already shows the pixels it holds just before the first user action changes it. Compute it per band, not over the whole region. If the content draw and the first action land in the same frame, report that value as an upper bound.

(2) If a take does 'evict file from page cache' and then waits (e.g. a 60 s gate check that other users aren't busy) before launching, other processes or readahead can re-warm part of the file during the wait. We saw 1.75% resident and a 2x faster open on one 'cold' take. Evict immediately before launch, inside the same script, after every wait, and log the residency right after the evict as well as just before launch.
