Performance
The benchmark opens generated documents at 500, 5,000, and 50,000 lines. Each
size is written twice with byte-identical content: the .txt file carries no
language for any editor, while the .lua file gives all three the same single
Tree-sitter Lua grammar.
Startup, quit, and idle cost are measured separately, because they answer different questions and no editor leads all three. Startup and quit are medians of 10 runs in a 120×40 pseudo-terminal with isolated configuration, cache, and state directories. Idle is the median and range of five independent ten-second windows, each using a fresh process. See the full benchmark methodology for details.
Measured on 31 August 2026 with Neovim 0.12.4, Helix 25.07.1, and Runyte 0.1.6 on an AMD Ryzen AI 9 365 running Linux 7.1.9. Absolute values are machine-specific and are not comparable against results taken on other hardware. In each row the fastest value is highlighted in green, the intermediate value in yellow, and the slowest in red. Ties are highlighted equally.
Startup
Startup is the time in milliseconds from immediately before the process launches until a token from the first document line appears in the raw terminal stream. It is one shared output event, not proof that the whole screen has been presented, that input is accepted, or that highlighting and background work have finished. An editor may emit that token before or after it parses the document, so an earlier value means the document text reached the terminal sooner — not that the editor completed more work.
| Fixture | LOC | Size | Neovim | Helix | Runyte |
|---|---|---|---|---|---|
short.txt | 0.5k | 17 kB | 19 | 17 | 6 |
medium.txt | 5k | 171 kB | 21 | 21 | 8 |
long.txt | 50k | 1.7 MB | 23 | 21 | 15 |
short.lua | 0.5k | 17 kB | 33 | 27 | 14 |
medium.lua | 5k | 171 kB | 27 | 48 | 28 |
long.lua | 50k | 1.7 MB | 28 | 215 | 176 |
Runyte emits document content first on every fixture without a language and on
the smallest Lua file. On medium.lua the millisecond separating Neovim and
Runyte is within ordinary run variation. On long.lua Neovim emits document
text at 28 ms against Runyte’s 176 ms: Runyte draws a stable
Opening workspace… presentation and then replaces it with a single complete
highlighted frame, so no document text is exposed in an unhighlighted or
reflowing intermediate state. That is a difference in output order, not
evidence that Neovim finished parsing 1.7 MB of Lua at 28 ms.
Quit
Quit is the time in milliseconds from the final force-quit keystroke until the
process exits. Every editor receives the same Esc : q ! Enter
sequence against the same unchanged document, so no editor-specific save or
persistence workflow is included.
| Fixture | LOC | Size | Neovim | Helix | Runyte |
|---|---|---|---|---|---|
short.txt | 0.5k | 17 kB | 2 | 4 | 4 |
medium.txt | 5k | 171 kB | 3 | 4 | 4 |
long.txt | 50k | 1.7 MB | 3 | 4 | 5 |
short.lua | 0.5k | 17 kB | 2 | 4 | 5 |
medium.lua | 5k | 171 kB | 2 | 7 | 8 |
long.lua | 50k | 1.7 MB | 6 | 22 | 28 |
Neovim exits first in every row. The category is reported as measured rather than dropped where Runyte does not lead.
Idle
With medium.lua open in a Git repository and no input, CPU is sampled over
ten seconds across the editor and every process it spawned, alongside the
number of times it writes to the screen. Each cell is the median across the
five windows, with the observed range in parentheses.
| Editor | Idle CPU | Screen writes |
|---|---|---|
| Neovim | 0.00 % (0.00–0.00) | 0 (0–0) |
| Helix | 0.00 % (0.00–0.00) | 0 (0–0) |
| Runyte | 0.00 % (0.00–0.10) | 0 (0–0) |
All three editors are event-driven at rest. One of Runyte’s five windows rounded to 0.10 %; the work that remains scheduled is bounded and named — a one-second maintenance wake and a two-second metadata reconciliation covering filesystem events the operating system fails to deliver.