Skip to content

Commit 1a31d37

Browse files
committed
Update benchmark numbers after trailing-whitespace trim
Re-ran `bench/run-bench.sh` at the new 5 MB default size (up from 1 MB — the larger run amortizes measurement overhead and gives more stable numbers) on Apple M4 Max, Emacs 31.0.50, post-trim. Plain-ASCII PTY throughput ticked up slightly for ghostel (64 → 65 MB/s) on top of the wider engine improvements from scrollback-in-buffer; the standout jump is URL-heavy input, which doubled from 22 to 42 MB/s since the previous README snapshot thanks to the scrollback promotion path preserving URL text properties instead of re-detecting on every scroll-off. With link detection disabled ghostel holds 65 MB/s regardless of the input mix. vterm / eat / term numbers are essentially unchanged from the previous run, re-measured for consistency.
1 parent b3e86b5 commit 1a31d37

1 file changed

Lines changed: 14 additions & 14 deletions

File tree

README.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -488,18 +488,18 @@ terminal emulators: [vterm](https://github.com/akermu/emacs-libvterm) (native
488488
module), [eat](https://codeberg.org/akib/emacs-eat) (pure Elisp), and Emacs
489489
built-in `term`.
490490

491-
The primary benchmark streams 1 MB of data through a real process pipe,
491+
The primary benchmark streams 5 MB of data through a real process pipe,
492492
matching actual terminal usage. All backends are configured with ~1,000
493493
lines of scrollback (matching vterm's default). Results on Apple M4 Max,
494494
Emacs 31.0.50:
495495

496496
| Backend | Plain ASCII | URL-heavy |
497497
|----------------------|------------:|----------:|
498-
| ghostel | 64 MB/s | 22 MB/s |
499-
| ghostel (no detect) | 65 MB/s | 61 MB/s |
500-
| vterm | 28 MB/s | 23 MB/s |
501-
| eat | 4.0 MB/s | 3.1 MB/s |
502-
| term | 5.0 MB/s | 4.2 MB/s |
498+
| ghostel | 65 MB/s | 42 MB/s |
499+
| ghostel (no detect) | 64 MB/s | 65 MB/s |
500+
| vterm | 29 MB/s | 24 MB/s |
501+
| eat | 3.9 MB/s | 3.0 MB/s |
502+
| term | 4.8 MB/s | 4.1 MB/s |
503503

504504
Ghostel scans terminal output for URLs and file paths, making them clickable.
505505
The "no detect" row shows throughput with this detection disabled
@@ -564,7 +564,7 @@ powering Neovim's built-in terminal.
564564
| Drag-and-drop | Yes | No |
565565
| Auto module download | Yes | No |
566566
| Scrollback default | ~5,000 | 1,000 |
567-
| PTY throughput (plain ASCII) | 64 MB/s | 28 MB/s |
567+
| PTY throughput (plain ASCII) | 65 MB/s | 29 MB/s |
568568
| Default redraw rate | ~30 fps | ~10 fps |
569569

570570
### Key differences
@@ -591,13 +591,13 @@ bash, zsh, and fish — no shell RC changes needed. vterm requires manually
591591
sourcing scripts in your shell configuration. Both support Elisp eval from
592592
the shell and TRAMP-aware remote directory tracking.
593593

594-
**Performance.** In PTY throughput benchmarks (1 MB streamed through `cat`,
595-
both backends configured with ~1,000 lines of scrollback), ghostel is roughly
596-
2x faster than vterm on plain ASCII data (64 vs 28 MB/s). On URL-heavy
597-
output the gap narrows as ghostel's link detection adds overhead, but with
598-
detection disabled ghostel reaches 65 MB/s. See the
599-
[Performance](#performance) section above for full numbers and how to run the
600-
benchmark suite yourself.
594+
**Performance.** In PTY throughput benchmarks (5 MB streamed through `cat`,
595+
both backends configured with ~1,000 lines of scrollback), ghostel is
596+
roughly 2x faster than vterm on plain ASCII data (65 vs 29 MB/s). On
597+
URL-heavy output ghostel still comes out ahead of vterm (42 vs 24 MB/s);
598+
with link detection disabled ghostel reaches 65 MB/s regardless of input.
599+
See the [Performance](#performance) section above for full numbers and how
600+
to run the benchmark suite yourself.
601601

602602
**Installation.** Ghostel can automatically download a pre-built native
603603
module or compile from source with [Zig](https://ziglang.org/). vterm uses

0 commit comments

Comments
 (0)