Replace a claim measured through the software rasteriser
Two places said the history cushion's evidence was a swipe that moved nothing for 689ms. That reading came from `ui-trace show` on a row taller than the viewport, which reports clipped bounds and so prints "nothing moved" for a list that is scrolling fine -- and it was taken on the software renderer besides. The finding it supported is sound and has a better witness: counted at the server, ten swipes asked for ten pages before the change and three after, which does not depend on how anything renders. Also records what the screen actually costs now, measured on the GPU emulator: 5.2-5.9% janky frames and 0-2 slow UI-thread frames flinging fast, against 3.3% for the stock Settings app on the same device. With the note that matters for repeating it -- let the screen settle before resetting gfxinfo, because the first seconds after opening a session are every row being composed for the first time and read three times worse. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0dc248b9e4
commit
3da0f2e2f6
2 files changed
+23
-6
No files matched your search
@@ -88,13 +88,15 @@ private val LOADING_SPINNER = 48.dp
|
||||
* row is anything from one line to a page and a fixed count is therefore a distance only by
|
||||
* accident. Eight rows was the number, and on a tool-heavy transcript eight rows is less than one
|
||||
* screen: the reader reached the end of what was loaded on *every* swipe and waited a round trip
|
||||
* standing there. That is what "scrolling is laggy" turned out to be -- not a slow frame, but the
|
||||
* list running out of transcript, which the emulator showed as a swipe that moved nothing for 689ms
|
||||
* and then jumped.
|
||||
* standing there, which is a list running out of transcript rather than a slow frame.
|
||||
*
|
||||
* Three, so a fling lands on rows that are already there and the page after them is on its way. The
|
||||
* cost of being generous is a page fetched that nobody reads; the cost of being mean is a list that
|
||||
* stops under a finger, and those are not the same size.
|
||||
*
|
||||
* Counted at the server rather than inferred from the screen, which is the only measurement here
|
||||
* that does not depend on how the emulator renders: against a 24,000-event transcript at `--delay
|
||||
* 120`, ten swipes asked for **ten** pages before this and **three** after.
|
||||
*/
|
||||
private const val HISTORY_SCREENS = 3
|
||||
|
||||
|
||||
Reference in new issue
Block a user