The bundle

CRuby, Rails, the gems and this app, compiled to one WebAssembly module. Counted byte by byte as it streamed into the compiler on the last boot this browser recorded — MB here means 106 bytes.

app.wasm the module the browser compiles
Over the network what actually crossed the wire, compression included
Served from the browser's own accounting, not an assumption

Boot

Two boots, told apart by what each one measured rather than by which visit it was: a boot that pulled the bundle over the network, and a boot that found it in the cache. The second column is what every visit after the first one costs.

Phase Bundle from network Bundle from cache
Database openedPGlite — a Postgres in wasm, kept in IndexedDB
Bundle downloadedstreamed into the compiler as it arrived
CRuby compiledthe tail after the last byte; the rest overlapped the download
Rails bootedyour initializers and eager loads, in this tab
Schema preparedyour migrations, against the local Postgres
First page renderedGET / handled by Rails here, HTML only
Totalwall clock, first phase to a usable app
Recorded

This tab, right now

One Rails action, requested twice at the same moment: once by whatever runtime is serving this page, once with the marker that sends it to the server over the network. Same controller, same query, same write.

Measurement Here Server
Round triprequest to response, timed by this page
Query20 newest issues, timed inside Ruby
WriteINSERT plus its outbox row, rolled back — no COMMIT in this number
Differencederived: server round trip ÷ local round trip

Method

The code behind this page Read live out of app.wasm — not a snippet