Subpop

Terminal Benchmarking

As the number of "GPU-accelerated" terminal emulators continues to grow, I decided to download a few and run them through a benchmarking utility. Don't take these results to seriously; I spent a minute searching the web for a terminal benchmarking utility and loaded the first one I found.

The terminal emulators I tried are:

When you run termbench in a terminal emulator, it writes a ton of characters to the terminal and measures the response rates. I didn't read much more about it, so I don't truly know what these numbers mean. Are the number of seconds for each category better when they're higher or lower? Are the speeds better when they're larger? What are these categories anyway? Observating the "fastness" of each terminal running termbench_release_clang, I am going to assume that higher speeds and lower times mean a faster terminal.

The project README states:

On modern Windows machines with memory bandwidth in the 10-20gb/s range, the expected throughput for these tests would be in the 0.5-2.0gb/s range for a reasonable terminal. Numbers significantly higher than that might indicate a well-optimized terminal, and numbers significantly lower than that might indicate a poorly written terminal.

So I compiled termbench_release_clang and ran it once in each terminal emulator. Here are the raw results:

Terminal.app

CPU: Apple M3 8 Core Processor (HP:4 LP:4)
VT support: no
ManyLine: 35.9505s (0.0278gb/s)
LongLine: 21.7549s (0.0460gb/s)
FGPerChar: 12.6217s (0.0230gb/s)
FGBGPerChar: 19.0376s (0.0296gb/s)
TermMarkV2 Normal: 89.3648s (0.0319gb/s)

iTerm2

CPU: Apple M3 8 Core Processor (HP:4 LP:4)
VT support: no
ManyLine: 67.0377s (0.0149gb/s)
LongLine: 26.8234s (0.0373gb/s)
FGPerChar: 11.4498s (0.0254gb/s)
FGBGPerChar: 17.2474s (0.0327gb/s)
TermMarkV2 Normal: 122.5584s (0.0233gb/s)

Kitty

CPU: Apple M3 8 Core Processor (HP:4 LP:4)
VT support: no
ManyLine: 13.0050s (0.0769gb/s)
LongLine: 8.6133s (0.1161gb/s)
FGPerChar: 2.5826s (0.1124gb/s)
FGBGPerChar: 5.6722s (0.0994gb/s)
TermMarkV2 Normal: 29.8731s (0.0955gb/s)

Alacritty

CPU: Apple M3 8 Core Processor (HP:4 LP:4)
VT support: no
ManyLine: 11.8043s (0.0847gb/s)
LongLine: 9.1261s (0.1096gb/s)
FGPerChar: 2.2228s (0.1306gb/s)
FGBGPerChar: 5.3773s (0.1049gb/s)
TermMarkV2 Normal: 28.5305s (0.1000gb/s)

Tabby

CPU: Apple M3 8 Core Processor (HP:4 LP:4)                                                     
VT support: no                                                                                 
ManyLine: 67.0478s (0.0149gb/s)                                                                
LongLine: 57.1490s (0.0175gb/s)                                                               
FGPerChar: 58.9302s (0.0049gb/s)                                                               
FGBGPerChar: 45.5744s (0.0124gb/s)                                                             
TermMarkV2 Normal: 228.7014s (0.0125gb/s)  

Hyper

CPU: Apple M3 8 Core Processor (HP:4 LP:4)
VT support: no
ManyLine: 18.7012s (0.0535gb/s)
LongLine: 16.95065 (0.0590gb/s)
FGPerChar: 5.1101s (0.0568gb/s)
FGBGPerChar: 11.1717s (0.0505gb/s)
TermMarkV2 Normal: 51.93365 (0.0550gb/s)

Visual Studio Code

CPU: Apple M3 8 Core Processor (HP:4 LP:4)
VT support: no
ManyLine: 109.0999s (0.0092gb/s)
LongLine: 96.1632s (0.0104gb/s)
FGPerChar: 70.3354s (0.0041gb/s)
FGBGPerChar: 83.2457s (0.0068gb/s)
TermMarkV2 Normal: 358.84425_(0.0080gb/s)

And everyone loves a chart, so here is one.

terminal-emulator-benchmarks

Some interesting observations during this test.

If you want an overall best terminal emulator rating, the "TermMarkV2 Normal" rating is the overall test runtime. Using that number as our measurement of success, that puts our ranking as follows:

  1. Alacritty (28s)
  2. Kitty (29s)
  3. Hyper (51s)
  4. Terminal.app (89s)
  5. iTerm2 (122s)
  6. Tabby (228s)
  7. Visual Studio Code (358s)

#macOS #terminal