Benchmarks
How fast is NomiPad on a 1 GB file?
NomiPad opens a 1 GiB log (8.8 million lines) to its first screen in about 1 ms (0.23 ms median, 0.82 ms worst of 5 runs), indexes every line in the background in about 2 seconds while you already scroll and edit, jumps to a line 90% into the file in about 30 ms before indexing gets there, and searches the whole file for plain text at up to 11.8 GiB/s (2.7 GiB/s for a case-insensitive whole-word regex). Measured in September 2026 on an Apple M5, macOS 26.5, release build, file already in the OS page cache; a file that isn’t cached yet is limited by the speed of your disk.
By the NomiPad team · Updated
Results
One full run of NomiPad’s automated performance suite, re-measured on September 23, 2026. Where runs varied, the range is given.
| What | Measured | Note |
|---|---|---|
| Open a 1 GiB log to its first screen | 0.82 ms worst of 5 (0.23 ms median) | Target: under 1 s |
| Memory added by opening the file | 0.02 MiB | The file is mapped, not copied |
| Index every line in the background | 1.9 s (2.0–3.2 s over 5 runs) | You can scroll and edit meanwhile |
| Memory used by the finished index | 66.9 MiB for 8,776,145 lines | One offset per line |
| First jump to 90% of the file, before indexing gets there | 31 ms (26–32 ms over 4 runs) | |
| Every later jump before indexing is done (p99) | 0.27 ms | |
| Fetch 500 lines deep in the file (p99) | 0.21 ms | What scrolling asks for |
| Plain-text search through the whole file | 12,082 MiB/s (11.8 GiB/s) | |
| Regex, case-insensitive, whole-word search | 2,706 MiB/s | |
| Search a UTF-16 LE file (64 MiB) | 569–1,610 MiB/s | |
| Open a 280 MiB log (windowed) | 7.1 ms worst of 5 (0.22 ms median) | |
| Open a 60 MiB log (loaded whole, every feature on) | 111 ms worst of 5 (97 ms median) | |
| Open a 40,000-line code file | 4.8 ms worst of 5 (3.5 ms median) |
Setup
- Machine: Apple M5, macOS 26.5.2, local SSD.
- Build: the release build NomiPad ships (optimized, link-time optimization on).
- File: a generated 1 GiB log with 8,776,145 lines, plus 280 MiB, 60 MiB and 40,000-line fixtures.
- Cache: warm. The files were already in the operating system’s page cache. A file that isn’t cached yet is limited by your disk: opening still reads only the first few kilobytes, but the first full pass (indexing, search) takes about as long as reading the file once.
- Runs: worst of 5 for opens; the machine was shared with other build jobs, so single numbers wobble.
What exactly is timed
Open and jump times cover NomiPad’s Rust file engine up to the moment the data for the first screen is ready. Drawing that screen in the window is not included. Files above 64 MiB open in Plain mode: the editor holds a sliding window of lines fetched from the engine instead of the whole text, which is why the 1 GiB open is faster than the 60 MiB one, which loads whole with every feature on.
What we haven’t measured, or don’t pass yet
- Typing latency: the median key press paints within one frame, but the slowest 1% take about 20 ms from key press to paint, over our 16 ms target. We don’t claim sub-16 ms typing.
- Scrolling at 60 fps: measured in Chrome with the real editor (no dropped frames in 1,800), not yet in the app’s own WebView on macOS.
- Idle memory of the whole app: not measured yet.
- Other editors: we haven’t benchmarked them. The comparison cites their own documentation and issue trackers instead.
How the numbers are kept honest
The suite lives in NomiPad’s own code and runs as ordinary tests: it generates the fixtures, times each step and fails if a number goes over its budget, so a slowdown can’t ship unnoticed. When numbers here change, this page and the figures on the home page are updated together.