Performance
Read benchmark trends and the release performance gate.
Every push to main runs the benchmark suite once on a shared Linux runner and records the median of three cold samples per metric. The charts below are those records, newest on the right. They show drift across many small commits; a single point is noise, a slope is a finding.
interaction-latency/render_ready_ms124 mslarge-stream/render_ready_ms387 msnon-ascii-stream/render_ready_ms127 ms
interaction-latency/nav_press_median_ms38 msinteraction-latency/nav_press_p95_ms70 mslarge-stream/row_step_median_ms102 msnon-ascii-stream/block_step_median_ms34 ms
artifact-parse/plan_parse_ms59 msartifact-parse/anchor_fuzzy_resolve_ms11 msartifact-parse/many_files_diff_rows_ms83 msartifact-parse/large_file_diff_rows_ms105 ms
daemon-roundtrip/session_create_total_ms80 msdaemon-roundtrip/session_get_total_ms28 ms
interaction-latency/after_navigation_heap40 MiBlarge-stream/after_steps_heap98 MiBdaemon-roundtrip/after_sessions_heap19 MiB
What the numbers mean
- Render to ready is the time from mounting the review to the app's ready signal, with the daemon already running. It is the cost of the artifact, not of launching the binary.
- Key press latency is a caret move timed until the painted frame settles, as the in-process median and p95. It carries a fixed measurement cost of a few milliseconds, so compare the lines, not the absolute values.
- Parsing batches fast operations so their totals clear the release gate's 5 ms floor; the batch sizes are constant, so the lines are comparable.
- Retained memory is heap in use after a full collection.
How releases are guarded
The numbers here are informational. The release workflow separately measures the previous published binary against the fresh one on the same runner, interleaved, and refuses to stage a release whose startup or first frame got materially slower: at least 15 percent and 5 milliseconds. A pull request also receives a comment comparing its head against its merge base with the same thresholds, which never blocks a merge. Details live in the repository's benchmarks README.