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_ms81 mslarge-stream/render_ready_ms354 msnon-ascii-stream/render_ready_ms80 ms
interaction-latency/nav_press_median_ms31 msinteraction-latency/nav_press_p95_ms54 mslarge-stream/row_step_median_ms79 msnon-ascii-stream/block_step_median_ms26 ms
artifact-parse/plan_parse_ms39 msartifact-parse/anchor_fuzzy_resolve_ms7 msartifact-parse/many_files_diff_rows_ms60 msartifact-parse/large_file_diff_rows_ms71 ms
daemon-roundtrip/session_create_total_ms47 msdaemon-roundtrip/session_get_total_ms14 ms
interaction-latency/after_navigation_heap38 MiBlarge-stream/after_steps_heap104 MiBdaemon-roundtrip/after_sessions_heap18 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.