feat(examples): stress-tv autosweep measures load time, not steady-state FPS#85
Merged
Merged
Conversation
…y-state FPS On a vsync-capped TV the steady-state FPS of a static grid just pins at the panel refresh, so the old sweep reported every tier as "limited by index cap" at ~60fps — the FPS number carried no signal. The cost that actually hurts on a constrained device is the one-time build + texture upload (the slow load, and eventual OOM), which the FPS sweep skipped during its warm-up. The sweep now measures time-to-ready (buildGrid -> renderer idle) per count and reports the highest count that loads within a budget: ?test=stress-tv&autosweep=true (default 1000ms) ?test=stress-tv&autosweep=true&loadbudget=500 FPS is kept as a secondary readout. Also stops testing past the ladder max: the old code appended the index cap (up to 16384) as a probe rung, which is fine for cheap FPS sampling but would hang/OOM the device when building that many nodes for a load-time measurement. Per-tier limiter is now meaningful (ladder max / load budget / index cap) instead of always "index cap". Verified in-browser; default scene unchanged so the certified snapshot is unaffected. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
On a 60 Hz TV, the steady-state FPS of a static grid just pins at the panel refresh — so the old autosweep reported every tier as "limited by index cap" at ~60 fps. The FPS number revealed nothing, because the renderer keeps up frame-to-frame right until the correctness cap. The cost that actually hurts a constrained device is the one-time build + texture upload (the slow load, eventual OOM), which the FPS sweep deliberately skipped during its warm-up.
What changed
buildGrid→rendereridle) per count and reports the highest count that loads within a budget:ladder max/>Nms load/index cap, instead of alwaysindex cap.Verified
In-browser (tight
loadbudget=80to force a crossover on a fast 120 Hz dev box):Each tier now reports a distinct, meaningful limit. Default scene (200 cards, +image) is unchanged, so the certified
chromium-cisnapshot is unaffected.🤖 Generated with Claude Code