Skip to content

Performance benchmarks

Open in ChatGPT ↗
Ask ChatGPT about this page
Open in Claude ↗
Ask Claude about this page
Copied!

This is a short comparison of different terminals and their performance.

Terminal apps selected for these benchmarks

Section titled “Terminal apps selected for these benchmarks”

We chose to benchmark Warp against 4 other terminal emulator applications, based on their popularity as well as language and principles. Here is the list of the applications we chose for this comparison together with the explanation as to why we decided to include it in our comparison:

  • Terminal.app - the default terminal app available on the macOS;
  • ITerm2 - one of the most popular terminal emulators used by macOS users;
  • Alacritty & WezTerm - both of those terminals are written in Rust and are well-known for their speed and overall performance, things that Warp is aiming for.

Versions & settings used during the comparison

Section titled “Versions & settings used during the comparison”
TerminalVersionTerminal size (cols / rows, window is identical pixel-wise)
Warpv0.2022.04.01.01.37.stable_03208 cols / 54 rows
Terminal.appVersion 2.11 (440)188 cols / 72 rows
iTerm2Build 3.4.15211 cols / 78 rows
Alacrittyalacritty 0.10.1 (2844606)286 cols / 102 rows
Wezterm20220319-142410-0fcdea07243 cols / 80 rows

We link the source code of each benchmark used, so you can easily reproduce the tests with other terminal apps. Please, note that those benchmarks are not exhaustive. Comparing terminal emulators with each other is not an easy task - right now we’re checking how each of the apps behaves when dealing with lots of input and/or output.

Ideally, the benchmarks would also cover the latency (time between pressing a key and the character showing on the screen, but also a delay between the user’s input and communication with the shell). We may include tests that account for that in the future.

Benchmark code can be found here with the specific commit we used in our comparison: 93bcc32b6e0f7560e9b1a5a8b0998c04fbf9b50d. Results in milliseconds.

Average time for each of the benchmark tests

Section titled “Average time for each of the benchmark tests”
Warp avg (ms)Terminal.app avg (ms)iTerm avgAlacritty avgWezTerm avg
dense_cells43.8824.91144.847.2528.15
scrolling30.06283.341257.5731.75687.77
scrolling_bottom_region117.34257.231294.2529.1672.67
scrolling_bottom_small_region114.52227.75125125.98669.93
scrolling_fullscreen37.4307.031565.1737.361205
scrolling_top_region120.63209.292212.284.42682.6
scrolling_top_small_region114.64205.591216.3321.91663.44
unicode66.4734.4593.0116.781279.25

VTEbench average results (logarithmic scale )

Warp p90Terminal.app p90iTerm p90Alacritty p90WezTerm p90
dense_cells5228189832
scrolling32266.76133632707
scrolling_bottom_region170243139830686
scrolling_bottom_small_region167224133130679
scrolling_fullscreen383271593411208
scrolling_top_region178222224385686
scrolling_top_small_region167222131430666
unicode773990203883

VTEbench p90 results (logarithmic scale )

Benchmark code can be found here with the specific commit we used in our comparison: 82afbc69256b4e22de913f0f02f82e0480f3dac5.

Below you’ll find results for small and regular test sizes. Note that Terminal.app only participated in the small test. Results in seconds.

Warp small (s)Terminal.app small (s)iTerm small (s)Alacritty smallWezTerm small
ManyLine6.78542.67898.70571.25328.9436
LongLine9.00331.64739.08490.817911.4587
FGPerChar1.3716453.98882.66250.27880.6487
FGBGPerChar2.8403908.8944.58810.59310.7283
overall result20.00061367.20925.04132.94321.7793

Termbench small results (logarithmic scale )

Warp regular (s)iTerm regular (s)Alacritty regular (s)WezTerm regular
ManyLine113.76132.497519.8802150.8175
LongLine155.0937126.756112.7859207.3647
FGPerChar21.892839.33524.29259.4265
FGBGPerChar46.31250.53698.41813.5142
overall result337.0585349.125845.3767381.1229

Termbench results (logarithmic scale)