Performance
Performance, measured
These are results from Crane’s own benchmarks on three setups on two computers, listed below. They time the parts of Crane that do the heavy work — finding lines, searching, editing, coloring — with the text already in memory, so they show Crane’s speed rather than the disk’s. Your results will depend on your computer.
The computers
Apple M2
- Processor
- Apple M2, 8 cores (4 performance, 4 efficiency)
- Memory
- 16 GB memory
- System
- macOS 27.0.1
- Crane
- Source of October 21, 2026 (7bace340). Optimized build (RelWithDebInfo), Apple Clang 21.0.0.21000334
- Runs
- Median of 30 runs: 5 launches × 6 repetitions
- Measured
- October 21, 2026
AMD Ryzen 7 2700 (Linux)
- Processor
- AMD Ryzen 7 2700 Eight-Core Processor, 8 cores, 16 threads
- Memory
- 16 GB memory
- System
- Fedora Linux 44 (Workstation Edition), kernel 7.2.11
- Crane
- Source of October 20, 2026 (fafb1b5d). Optimized build (RelWithDebInfo), Clang 22.1.8
- Runs
- Median of 30 runs: 5 launches × 6 repetitions
- Measured
- October 20, 2026
AMD Ryzen 7 2700 (Windows)
- Processor
- AMD Ryzen 7 2700 Eight-Core Processor, 8 cores, 16 threads
- Memory
- 16 GB memory
- System
- Windows 10 (build 19045)
- Crane
- Source of October 21, 2026 (2e431bba). Optimized build (RelWithDebInfo), Clang 23.1.3, with uncommitted changes
- Runs
- Median of 30 runs: 5 launches × 6 repetitions
- Measured
- October 21, 2026
Each figure is a median: the middle value of every run on that computer. The runs are spread over several separate launches of the benchmark program, each repeating every benchmark in a random order, so a busy moment on the computer can’t land on just one result.
The small range beside a figure, and the whisker at the end of a bar, cover the middle half of the runs. The shorter it is, the less the result moved from one run to the next.
Opening a file
Crane shows a file as soon as it has read the start, and reads the rest in the background.
When a file isn’t in memory yet, it has to come off the disk first, and even a fast SSD reads only a few gigabytes a second. For a large file opened for the first time, the disk is usually what you wait for.
Finding where lines start, on one core. This is the work of opening a file.
Higher is better
- Apple M2
- 4.8 GB/s
- AMD Ryzen 7 2700 (Linux)
- 3.9 GB/smiddle half of runs: 3.8–3.9 GB/s
- AMD Ryzen 7 2700 (Windows)
- 3.7 GB/smiddle half of runs: 3.5–3.7 GB/s
For the first 8 MB, which is what Crane reads before it shows the window.
Lower is better
- Apple M2
- 1.7 msmiddle half of runs: 1.7–1.8 ms
- AMD Ryzen 7 2700 (Linux)
- 2.2 msmiddle half of runs: 2.1–2.2 ms
- AMD Ryzen 7 2700 (Windows)
- 2.3 msmiddle half of runs: 2.2–2.4 ms
Searching
Crane searches with all of the computer’s processor cores at once, starting where you are. Plain words are the fastest to find; patterns that have to look harder at each line are slower.
After 3,000 scattered edits to the same file, the two fastest searches ran at 42.9 GB/s and 34.1 GB/s on the Apple M2, 9.7 GB/s and 9.2 GB/s on the AMD Ryzen 7 2700 (Linux), and 10.1 GB/s and 9.2 GB/s on the AMD Ryzen 7 2700 (Windows).
Higher is better
- Apple M2
- AMD Ryzen 7 2700 (Linux)
- AMD Ryzen 7 2700 (Windows)
- A rare word or phraseApple M2: 49.1 GB/sAMD Ryzen 7 2700 (Linux): 22.2 GB/sAMD Ryzen 7 2700 (Windows): 23.2 GB/s
- A simple patternApple M2: 39.4 GB/sAMD Ryzen 7 2700 (Linux): 21.8 GB/sAMD Ryzen 7 2700 (Windows): 22.3 GB/s
- A word, ignoring caseApple M2: 26.1 GB/sAMD Ryzen 7 2700 (Linux): 20.3 GB/sAMD Ryzen 7 2700 (Windows): 19.1 GB/s
- A phrase on most linesApple M2: 20.2 GB/sAMD Ryzen 7 2700 (Linux): 19.0 GB/sAMD Ryzen 7 2700 (Windows): 15.3 GB/s
- Accented text, ignoring caseApple M2: 7.9 GB/sAMD Ryzen 7 2700 (Linux): 9.8 GB/sAMD Ryzen 7 2700 (Windows): 8.8 GB/s
- A pattern of digitsApple M2: 2.6 GB/sAMD Ryzen 7 2700 (Linux): 6.5 GB/sAMD Ryzen 7 2700 (Windows): 4.5 GB/s
- A repeated wordApple M2: 840 MB/sAMD Ryzen 7 2700 (Linux): 992 MB/sAMD Ryzen 7 2700 (Windows): 947 MB/s
Show as a table
Higher is better
| Search | Computer | All cores | One core | Matches |
|---|---|---|---|---|
A rare word or phraseZeta-Quasar-7 | Apple M2 | 49.1 GB/s47.7–50.1 GB/s | 19.8 GB/s18.1–21.7 GB/s | 98 |
| AMD Ryzen 7 2700 (Linux) | 22.2 GB/s21.8–22.4 GB/s | 15.0 GB/s14.6–15.4 GB/s | 98 | |
| AMD Ryzen 7 2700 (Windows) | 23.2 GB/s22.6–24.9 GB/s | 8.5 GB/s8.3–8.8 GB/s | 98 | |
A simple patternERROR \d+ | Apple M2 | 39.4 GB/s35.3–45.1 GB/s | 11.6 GB/s9.1–11.9 GB/s | 5,636 |
| AMD Ryzen 7 2700 (Linux) | 21.8 GB/s21.4–21.8 GB/s | 8.0 GB/s7.9–8.2 GB/s | 5,636 | |
| AMD Ryzen 7 2700 (Windows) | 22.3 GB/s20.3–23.0 GB/s | 5.0 GB/s4.9–5.1 GB/s | 5,636 | |
A word, ignoring casetimeout | Apple M2 | 26.1 GB/s22.9–30.9 GB/s | 5.9 GB/s5.0–6.0 GB/s | 28,074 |
| AMD Ryzen 7 2700 (Linux) | 20.3 GB/s19.1–20.5 GB/s | 4.1 GB/s4.0–4.2 GB/s | 28,074 | |
| AMD Ryzen 7 2700 (Windows) | 19.1 GB/s17.9–20.8 GB/s | 3.5 GB/s3.4–3.6 GB/s | 28,074 | |
A phrase on most linesstatus=200 | Apple M2 | 20.2 GB/s17.8–24.8 GB/s | 4.9 GB/s4.5–5.1 GB/s | 5,046,753 |
| AMD Ryzen 7 2700 (Linux) | 19.0 GB/s18.2–19.8 GB/s | 3.6 GB/s3.5–3.8 GB/s | 5,046,753 | |
| AMD Ryzen 7 2700 (Windows) | 15.3 GB/s14.4–16.3 GB/s | 2.0 GB/s1.9–2.0 GB/s | 5,046,769 | |
Accented text, ignoring caseRÉSUMÉ | Apple M2 | 7.9 GB/s7.3–9.4 GB/s | 1.9 GB/s1.7–2.0 GB/s | 1,933 |
| AMD Ryzen 7 2700 (Linux) | 9.8 GB/s9.2–10.2 GB/s | 1.3 GB/s | 1,933 | |
| AMD Ryzen 7 2700 (Windows) | 8.8 GB/s8.3–9.0 GB/s | 1.2 GB/s1.1–1.2 GB/s | 1,933 | |
A pattern of digits\d{3}-\d{4} | Apple M2 | 2.6 GB/s2.3–2.8 GB/s | 456 MB/s429–467 MB/s | 111,690 |
| AMD Ryzen 7 2700 (Linux) | 6.5 GB/s5.6–6.8 GB/s | 650 MB/s642–655 MB/s | 111,690 | |
| AMD Ryzen 7 2700 (Windows) | 4.5 GB/s4.3–4.6 GB/s | 503 MB/s477–513 MB/s | 111,690 | |
A repeated word(\w+) \1 | Apple M2 | 840 MB/s716–980 MB/s | 210 MB/s204–216 MB/s | 5,622,547 |
| AMD Ryzen 7 2700 (Linux) | 992 MB/s896 MB/s – 1.0 GB/s | 127 MB/s125–128 MB/s | 5,622,547 | |
| AMD Ryzen 7 2700 (Windows) | 947 MB/s920–974 MB/s | 113 MB/s111–118 MB/s | 5,622,567 |
Editing
Crane keeps your changes apart from the original file instead of rewriting it, so an edit costs about the same however much of the file has already been changed.
These times are for the edit itself; drawing the result on screen comes on top.
To make an edit anywhere in an untouched file.
Lower is better
- Apple M2
- 2.3 µs
- AMD Ryzen 7 2700 (Linux)
- 3.6 µsmiddle half of runs: 3.4–3.8 µs
- AMD Ryzen 7 2700 (Windows)
- 3.2 µsmiddle half of runs: 3.2–3.5 µs
The same, after 32,000 earlier edits.
Lower is better
- Apple M2
- 2.5 µs
- AMD Ryzen 7 2700 (Linux)
- 3.6 µsmiddle half of runs: 3.5–3.7 µs
- AMD Ryzen 7 2700 (Windows)
- 3.6 µsmiddle half of runs: 3.5–3.9 µs
Per character, typing in one place.
Lower is better
- Apple M2
- 15 nsmiddle half of runs: 15–16 ns
- AMD Ryzen 7 2700 (Linux)
- 39 nsmiddle half of runs: 38–39 ns
- AMD Ryzen 7 2700 (Windows)
- 33 nsmiddle half of runs: 31–36 ns
Coloring very large files
Above 8 MB, Crane colors the file a line at a time, so it can start wherever you scroll to. At these rates, a screenful of lines takes well under a millisecond.
Higher is better
- Apple M2
- AMD Ryzen 7 2700 (Linux)
- AMD Ryzen 7 2700 (Windows)
- LogApple M2: 312 MB/sAMD Ryzen 7 2700 (Linux): 172 MB/sAMD Ryzen 7 2700 (Windows): 182 MB/s
- SQL dumpApple M2: 229 MB/sAMD Ryzen 7 2700 (Linux): 143 MB/sAMD Ryzen 7 2700 (Windows): 155 MB/s
- CSVApple M2: 208 MB/sAMD Ryzen 7 2700 (Linux): 133 MB/sAMD Ryzen 7 2700 (Windows): 138 MB/s
- FASTQApple M2: 145 MB/sAMD Ryzen 7 2700 (Linux): 100 MB/sAMD Ryzen 7 2700 (Windows): 112 MB/s
Not measured yet
- The time from opening a file to seeing it on screen, end to end.
- How long saving takes, for small and large changes.
- Memory use with very large files open.