终端 > 终端对比
性能基准测试
# 性能基准测试 ## 用于这些基准测试的终端应用程序 我们选择将 Warp 与其他 4 款终端模拟器应用程序进行基准对比,参考了它们的流行程度以及所采用的语言和原则。以下是我们选择用于此次对比的应用程序列表,以及我们决定将其纳入对比的原因: * Terminal.app - macOS 上默认的终端应用程序; * ITerm2 - macOS 用户最常用的终端模拟器之一; * Alacritty & WezTerm - 这两款终端均使用 Rust 编写,以其速度和整体性能而闻名,这也是 Warp 所追求的目标。 ### 比较中使用的版本和设置 | 终端 | 版本 | 终端尺寸(列/行,窗口像素完全一致) | | ------------ | ------------------------------ | ----------------------------------------------------------- | | Warp | v0.2022.04.01.01.37.stable_03 | 208 列 / 54 行 | | Terminal.app | Version 2.11 (440) | 188 列 / 72 行 | | iTerm2 | Build 3.4.15 | 211 列 / 78 行 | | Alacritty | alacritty 0.10.1 (2844606) | 286 列 / 102 行 | | Wezterm | 20220319-142410-0fcdea07 | 243 列 / 80 行 | ### 关于基准测试 我们链接了所使用的每个基准测试的源代码,因此您可以轻松地使用其他终端应用程序重现测试。请注意,这些基准测试并非详尽无遗。将终端模拟器进行相互比较并非易事——目前我们正在检查每个应用程序在处理大量输入和/或输出时的表现。理想情况下,基准测试还应涵盖延迟(从按下按键到字符显示在屏幕上的时间,以及用户输入与 shell 通信之间的延迟)。我们可能会在未来加入考虑这些因素的测试。 ## VTE 基准测试 基准测试代码可以在[此处](https://github.com/alacritty/vtebench)找到,我们对比中使用的特定提交为:`93bcc32b6e0f7560e9b1a5a8b0998c04fbf9b50d`。结果以毫秒为单位。 ### 每个基准测试的平均耗时 | | Warp 平均值 (ms) | Terminal.app 平均值 (ms) | iTerm 平均值 | Alacritty 平均值 | WezTerm 平均值 | | -------------------------------- | ------------- | --------------------- | --------- | ------------- | ----------- | | dense_cells | 43.88 | 24.91 | 144.84 | 7.25 | 28.15 | | scrolling | 30.06 | 283.34 | 1257.57 | 31.75 | 687.77 | | scrolling_bottom_region | 117.34 | 257.23 | 1294.25 | 29.1 | 672.67 | | scrolling_bottom_small_region | 114.52 | 227.75 | 1251 | 25.98 | 669.93 | | scrolling_fullscreen | 37.4 | 307.03 | 1565.17 | 37.36 | 1205 | | scrolling_top_region | 120.63 | 209.29 | 2212.2 | 84.42 | 682.6 | | scrolling_top_small_region | 114.64 | 205.59 | 1216.33 | 21.91 | 663.44 | | unicode | 66.47 | 34.45 | 93.01 | 16.78 | 1279.25 |  ### 结果的 P90 值 | | Warp P90 | Terminal.app P90 | iTerm P90 | Alacritty P90 | WezTerm P90 | | -------------------------------- | -------- | ---------------- | --------- | ------------- | ----------- | | dense_cells | 52 | 28 | 189 | 8 | 32 | | scrolling | 32 | 266.76 | 1336 | 32 | 707 | | scrolling_bottom_region | 170 | 243 | 1398 | 30 | 686 | | scrolling_bottom_small_region | 167 | 224 | 1331 | 30 | 679 | | scrolling_fullscreen | 38 | 327 | 1593 | 41 | 1208 | | scrolling_top_region | 178 | 222 | 2243 | 85 | 686 | | scrolling_top_small_region | 167 | 222 | 1314 | 30 | 666 | | unicode | 77 | 39 | 90 | 20 | 3883 |  ## Termbench 基准测试代码可以在[此处](https://github.com/cmuratori/termbench)找到,我们对比中使用的特定提交为:`82afbc69256b4e22de913f0f02f82e0480f3dac5`。下面您将找到小型和常规测试规模的结果。请注意,Terminal.app 仅参与了小型测试。结果以秒为单位。 ### 小型测试规模 | | Warp 小型 (s) | Terminal.app 小型 (s) | iTerm 小型 (s) | Alacritty 小型 | WezTerm 小型 | | -------------- | -------------- | ---------------------- | --------------- | --------------- | ------------- | | ManyLine | 6.7854 | 2.6789 | 8.7057 | 1.2532 | 8.9436 | | LongLine | 9.0033 | 1.6473 | 9.0849 | 0.8179 | 11.4587 | | FGPerChar | 1.3716 | 453.9888 | 2.6625 | 0.2788 | 0.6487 | | FGBGPerChar | 2.8403 | 908.894 | 4.5881 | 0.5931 | 0.7283 | | overall result | 20.0006 | 1367.209 | 25.0413 | 2.943 | 21.7793 |  ### 常规测试规模 | | Warp 常规 (s) | iTerm 常规 (s) | Alacritty 常规 (s) | WezTerm 常规 | | -------------- | ---------------- | ----------------- | --------------------- | --------------- | | ManyLine | 113.76 | 132.4975 | 19.8802 | 150.8175 | | LongLine | 155.0937 | 126.7561 | 12.7859 | 207.3647 | | FGPerChar | 21.8928 | 39.3352 | 4.2925 | 9.4265 | | FGBGPerChar | 46.312 | 50.5369 | 8.418 | 13.5142 | | overall result | 337.0585 | 349.1258 | 45.3767 | 381.1229 | 这是一份关于不同终端及其性能的简要对比。
用于这些基准测试的终端应用程序
章节标题“用于这些基准测试的终端应用程序”我们选择将 Warp 与其他 4 款终端模拟器应用程序进行基准对比,参考了它们的流行程度以及所采用的语言和原则。以下是我们选择用于此次对比的应用程序列表,以及我们决定将其纳入对比的原因
- Terminal.app - macOS 上默认的终端应用程序;
- ITerm2 - macOS 用户最常用的终端模拟器之一;
- Alacritty & WezTerm - 这两款终端均使用 Rust 编写,以其速度和整体性能而闻名,这也是 Warp 所追求的目标。
比较中使用的版本和设置
章节标题“比较中使用的版本和设置”| 终端 | 版本 | 终端尺寸(列/行,窗口像素完全一致) |
|---|---|---|
| Warp | v0.2022.04.01.01.37.stable_03 | 208 列 / 54 行 |
| Terminal.app | Version 2.11 (440) | 188 列 / 72 行 |
| iTerm2 | Build 3.4.15 | 211 列 / 78 行 |
| Alacritty | alacritty 0.10.1 (2844606) | 286 列 / 102 行 |
| Wezterm | 20220319-142410-0fcdea07 | 243 列 / 80 行 |
关于基准测试
章节标题“关于基准测试”我们链接了所使用的每个基准测试的源代码,因此您可以轻松地使用其他终端应用程序重现测试。请注意,这些基准测试并非详尽无遗。将终端模拟器进行相互比较并非易事——目前我们正在检查每个应用程序在处理大量输入和/或输出时的表现。
理想情况下,基准测试还应涵盖延迟(从按下按键到字符显示在屏幕上的时间,以及用户输入与 shell 通信之间的延迟)。我们可能会在未来加入考虑这些因素的测试。
VTE 基准测试
章节标题“VTE 基准测试”基准测试代码可以在 此处 找到,我们对比中使用的特定提交为:93bcc32b6e0f7560e9b1a5a8b0998c04fbf9b50d。结果以毫秒为单位。
每个基准测试的平均耗时
章节标题“每个基准测试的平均耗时”| Warp 平均值 (ms) | Terminal.app 平均值 (ms) | iTerm 平均值 | Alacritty 平均值 | WezTerm 平均值 | |
|---|---|---|---|---|---|
| dense_cells | 43.88 | 24.91 | 144.84 | 7.25 | 28.15 |
| scrolling | 30.06 | 283.34 | 1257.57 | 31.75 | 687.77 |
| scrolling_bottom_region | 117.34 | 257.23 | 1294.25 | 29.1 | 672.67 |
| scrolling_bottom_small_region | 114.52 | 227.75 | 1251 | 25.98 | 669.93 |
| scrolling_fullscreen | 37.4 | 307.03 | 1565.17 | 37.36 | 1205 |
| scrolling_top_region | 120.63 | 209.29 | 2212.2 | 84.42 | 682.6 |
| scrolling_top_small_region | 114.64 | 205.59 | 1216.33 | 21.91 | 663.44 |
| unicode | 66.47 | 34.45 | 93.01 | 16.78 | 1279.25 |

结果的 P90 值
章节标题“结果的 P90 值”| Warp P90 | Terminal.app P90 | iTerm P90 | Alacritty P90 | WezTerm P90 | |
|---|---|---|---|---|---|
| dense_cells | 52 | 28 | 189 | 8 | 32 |
| scrolling | 32 | 266.76 | 1336 | 32 | 707 |
| scrolling_bottom_region | 170 | 243 | 1398 | 30 | 686 |
| scrolling_bottom_small_region | 167 | 224 | 1331 | 30 | 679 |
| scrolling_fullscreen | 38 | 327 | 1593 | 41 | 1208 |
| scrolling_top_region | 178 | 222 | 2243 | 85 | 686 |
| scrolling_top_small_region | 167 | 222 | 1314 | 30 | 666 |
| unicode | 77 | 39 | 90 | 20 | 3883 |

Termbench
章节标题“Termbench”基准测试代码可以在 此处 找到,我们对比中使用的特定提交为:82afbc69256b4e22de913f0f02f82e0480f3dac5。
下面您将找到小型和常规测试规模的结果。请注意,Terminal.app 仅参与了小型测试。结果以秒为单位。
小型测试规模
章节标题“小型测试规模”| Warp 小型 (s) | Terminal.app 小型 (s) | iTerm 小型 (s) | Alacritty 小型 | WezTerm 小型 | |
|---|---|---|---|---|---|
| ManyLine | 6.7854 | 2.6789 | 8.7057 | 1.2532 | 8.9436 |
| LongLine | 9.0033 | 1.6473 | 9.0849 | 0.8179 | 11.4587 |
| FGPerChar | 1.3716 | 453.9888 | 2.6625 | 0.2788 | 0.6487 |
| FGBGPerChar | 2.8403 | 908.894 | 4.5881 | 0.5931 | 0.7283 |
| 总体结果 | 20.0006 | 1367.209 | 25.0413 | 2.943 | 21.7793 |

常规测试规模
章节标题“常规测试规模”| Warp 常规 (s) | iTerm 常规 (s) | Alacritty 常规 (s) | WezTerm 常规 | |
|---|---|---|---|---|
| ManyLine | 113.76 | 132.4975 | 19.8802 | 150.8175 |
| LongLine | 155.0937 | 126.7561 | 12.7859 | 207.3647 |
| FGPerChar | 21.8928 | 39.3352 | 4.2925 | 9.4265 |
| FGBGPerChar | 46.312 | 50.5369 | 8.418 | 13.5142 |
| 总体结果 | 337.0585 | 349.1258 | 45.3767 | 381.1229 |
