Typing latency benchmarks across modern code editors

hackermanai1 pts0 comments

Benchmarks | Koi Editor

-->

Benchmarks

Last updated: 2026-07-29

This page contains documented and repeatable benchmarks comparing Koi Editor with other popular code editors.<br>All editors are tested on the same hardware using identical files and settings wherever possible.<br>Benchmarks are updated periodically as new editor releases become available.

Typing latency

Large file performance

Editor versions

Final notes

FAQ

Unless otherwise noted, all editors were tested with syntax highlighting enabled using their built-in language support.<br>Individual benchmarks may include different editors depending on compatibility with the test file and whether comparable functionality is available.<br>An editor may be omitted from a benchmark if it cannot be tested under comparable conditions.

Typing latency

Lower latency means the editor responds more quickly to each keypress.<br>Higher latency can make editing feel less responsive, especially when typing continuously in large source files.

All measurements in milliseconds.<br>Median represents the typical keypress latency, while the percentile metrics capture occasional slower frames that affect perceived responsiveness.

sqlite3.c

Editor<br>Median<br>p95<br>p99<br>Max<br>Tail Spread<br>vs Fastest (p95)

Koi<br>14.8<br>17.8<br>18.1<br>18.2<br>3.0<br>1.00x

Vim<br>15.5<br>19.4<br>20.7<br>46.9<br>3.9<br>1.09x

TextMate<br>25.6<br>28.8<br>30.5<br>31.1<br>3.2<br>1.62x

VS Code<br>26.4<br>35.5<br>39.4<br>39.9<br>9.1<br>2.00x

Zed<br>36.9<br>45.7<br>49.2<br>49.9<br>8.8<br>2.57x

Neovim<br>44.1<br>48.2<br>51.4<br>54.6<br>4.1<br>2.71x

Sublime Text<br>28.3<br>48.6<br>55.8<br>56.8<br>20.3<br>2.73x

Emacs<br>58.5<br>87.6<br>90.7<br>97.0<br>29.0<br>4.93x

BBEdit<br>27.3<br>91.1<br>98.4<br>101.5<br>63.8<br>5.13x

Notes:

VS Code performs well in this typing benchmark, but other editing operations, such as indenting many lines, were noticeably slower and occasionally caused the editor to become temporarily unresponsive.

gcc.c

Editor<br>Median<br>p95<br>p99<br>Max<br>Tail Spread<br>vs Fastest (p95)

Koi<br>14.9<br>18.3<br>19.5<br>23.4<br>3.3<br>1.00x

Lite XL<br>22.8<br>29.1<br>46.2<br>130.9<br>6.3<br>1.59x

VS Code<br>19.1<br>30.1<br>34.5<br>37.2<br>11.0<br>1.65x

Neovim<br>44.3<br>47.1<br>51.4<br>54.4<br>2.8<br>2.58x

Vim<br>43.2<br>47.6<br>49.0<br>49.4<br>4.5<br>2.61x

Sublime Text<br>32.1<br>52.4<br>56.4<br>63.3<br>20.3<br>2.87x

Xcode<br>45.4<br>53.3<br>61.8<br>64.1<br>7.9<br>2.92x

Zed<br>72.9<br>100.9<br>105.7<br>106.9<br>27.9<br>5.52x

Emacs<br>95.4<br>127.9<br>130.7<br>131.0<br>32.6<br>7.00x

BBEdit<br>25.9<br>317.7<br>326.3<br>327.1<br>291.7<br>17.39x

Notes:

Lite XL and Xcode were added to this benchmark.

Lite XL was tested with its default configuration, which disables code folding for files of this size.

TextMate and CodeEdit could not open the test file.

JetBrains CLion opened the file in read-only mode ("The file is too large: 21.86 MB.").

VS Code was faster in this benchmark than with the smaller sqlite3.c file.<br>The gcc.c file exceeds VS Code's large-file threshold, which activates special optimizations and may disable or reduce expensive editor features.<br>The lower typing latency observed here should therefore not be interpreted as a direct indication that larger files are inherently faster to edit.

Test environment

Component<br>Value

Hardware<br>Mac mini M2 Pro, 16 GB RAM

Operating System<br>macOS 15.7.5

Display<br>60 Hz

Test files<br>sqlite3.c (151,639 lines), gcc.c (753,821 lines)

Configuration<br>Default settings with syntax highlighting and line numbers enabled. Folding was enabled where supported, some editors automatically adjust features for very large files.

vim +'syntax on | set number autoindent smartindent cindent foldmethod=syntax foldlevel=99 complete=.,w,b,u,t,i'

nvim \<br>+'set ft=c number autoindent smartindent cindent complete=.,w,b,u,t,i' \<br>+'syntax on' \<br>+'set foldmethod=syntax foldenable foldlevel=99 foldlevelstart=99' \<br>+'normal! zR' \

Methodology

Typing latency was measured using keypress.sh, which records the time between a simulated keypress and the editor presenting the updated frame on screen.<br>Each benchmark consists of 200 measured keypresses, repeated under the same conditions.

Measurements shown are median, p95, p99, maximum latency, and tail spread (p95 – median), which indicates how consistent latency remains under heavier load.

Results were measured on a 60 Hz display, where one refresh interval is approximately 16.7 ms.<br>Since the benchmark measures keypress-to-display latency, values naturally cluster around multiples of the display refresh interval (16.7 ms, 33.3 ms, 50 ms, and so on).<br>Lower latency therefore means the editor more consistently completes processing within fewer display frames.

Large file performance

Last updated: 2026-07-28

Large file performance measures whether an editor can open and navigate very large files while remaining responsive.

Editor<br>5M lines<br>10M lines<br>15M lines<br>20M lines

Koi

Vim

Neovim

Sublime Text

VS Code<br>Degraded

TextMate<br>Degraded

Zed

BBEdit

Emacs

Legend: remained interactive throughout testing.<br>Degraded opened the file but editing performance was substantially impaired.<br>– could not be tested or did not remain usable.

Notes:

Sublime Text remains responsive but takes noticeably longer to open very large files and did not complete loading the 20M-line...

editor latency file code large files

Related Articles