Repository navigation
Add cold-startup benchmark (navigation start to first frame) - #56
Merged
Merged
Conversation
Measures navigation start to first renderer idle after rendering 1,000 rows, so JS download/parse/execute, framework init, font atlas load and scene build are all included in the timing. - New testrunner/runStartup.js: sequential cold loads with a fresh browser context per run, 6x CPU throttling applied before navigation (unlike the throughput benchmark which throttles after page load) - New #startup entry point in all framework variants (Renderer, FTL, Lightning2 incl. canvas/bitmap variants, Blits via a /startup route since Blits is hash-routed); each logs a Startup! console signal with the navigation-relative time - Startup results are processed with a plain relative mean against the fastest framework and reported in their own table section, deliberately excluded from avgMean so historical Overall scores are unchanged - writeResults renders a single results_*.html with only the sections that have data, keeping framework columns aligned - New --startup-only flag runs just the startup benchmark plus bundle sizes (tunable via STARTUP_RUNS, HEADLESS=true for headless Chromium)
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.
What
Adds a cold-startup benchmark alongside the existing throughput (
Done!) and memory (Memory!) tests: fresh browser context, load the app, render 1,000 rows, wait for the first renderer-idle, stop the clock. Timing is navigation-relative, so JS download/parse/execute, framework init, font atlas load and scene build are all included (bundle size matters).Covers all variants: Renderer (+canvasfonts), FTL (+canvas/bitmap/webgl-bitmap), Lightning2 (+core), Blits.
How it works
#startupentry point that renders 1,000 rows once and logsStartup!with the navigation-relative time (Blits gets a/startuproute since its router is hash-based)testrunner/runStartup.js: sequential cold loads, fresh context per run, 6x CPU throttle applied before navigation, per-run timeout, all-fail returnsstartup: -1avgMean, so historical Overall scores are unchangedwriteResultsemits a singleresults_*.htmlwith only the sections that have data, keeping framework columns alignednode index.js --startup-onlyruns just startup + bundle sizes (STARTUP_RUNS,HEADLESS=truesupported)Validation done
Failed, no unreplaced placeholders)Not included
No generated output (
results/,official_results/) and no build side-effects (package-locklink churn) — run on the default benchmark hardware and publish results from there.