Hacker News 中文摘要

RSS订阅

Windows终端延迟(2024) -- Terminal Latency on Windows (2024)

文章摘要

文章回顾了Windows终端的发展历程,从2009年MinTTY的优势到如今Windows Terminal的改进,包括PTY支持、ANSI序列兼容性等。最新版Windows Terminal 1.19通过修复显著降低了延迟,性能已媲美WSLtty。

文章总结

Windows终端延迟性能评测

更新与背景

2024年4月15日,Windows Terminal 1.19版本发布了一项优化,将延迟降低了一半,使其在作者设备上的表现已能与WSLtty媲美。作者曾在2009年撰文推荐MinTTY作为Windows最佳终端,如今Windows终端生态已显著改善: - Cygwin默认集成MinTTY - Windows新增PTY支持,消除了传统控制台窗口的延迟问题 - 全面支持ANSI终端序列 - 涌现多款优秀终端:Cmder、ConEmu、Alacritty、WezTerm等

评测标准

作者重点关注: 1. 基础功能:24位色、emoji支持、斜体显示 2. 输入延迟 3. 高吞吐量(如处理大文件时) 4. 多标签页支持(非必需)

参测终端

  • conhost.exe(传统Windows控制台)
  • MinTTY 3.7.0
  • Alacritty 0.13.1
  • WezTerm 20240203
  • Windows Terminal 1.18.10301

功能测试

通过colortest.rs脚本和Unicode emoji文件测试显示效果:

| 终端 | Emoji支持 | 字体特性 | |---------------|----------|----------------| | conhost.exe | 不支持 | 无斜体 | | MinTTY | 黑白显示 | 支持全部特性 | | Alacritty | 黑白显示 | 缺少双下划线 | | WezTerm | 彩色显示 | 支持全部特性 | | Windows Terminal | 彩色显示 | 支持全部特性 |

注:conhost.exe默认调色板表现较差(如黄色显绿、深蓝不易辨识)。

延迟测试

测试环境: - Windows 10系统 - Intel i7-4770处理器 - NVIDIA GTX 1060显卡 - 120Hz 4K显示器

测试方法: 使用240Hz高速摄像记录按键到像素变化的帧数,取五次测试中位数。

结果对比: 1. 80x50窗口测试(单位:毫秒): - conhost.exe WSL1:33.3ms - MinTTY WSL1:33.3ms - Windows Terminal WSL1:66.7ms

  1. 全屏Emacs编辑测试:
    • conhost.exe:45.8ms
    • MinTTY:52.42ms
    • Windows Terminal:75ms

吞吐量测试

通过输出10万行文本测试:

| 终端 | 耗时(秒) | |---------------|---------| | MinTTY WSL1 | 0.57 | | Windows Terminal | 5.25 | | conhost.exe | 21.8 |

MinTTY表现显著优于其他终端。

CPU占用测试

  1. 持续按键时:

    • WezTerm异常占用85%核心(疑似bug)
    • Windows Terminal占用20%
    • conhost.exe近乎0%
  2. 闲置时:

    • conhost.exe完全休眠
    • Windows Terminal后台仍消耗610万周期/秒
    • MinTTY闲置功耗高达1.2亿周期/秒(可能为bug)

结论

  1. 延迟表现:conhost.exe最佳,MinTTY紧随其后
  2. 综合推荐:MinTTY在吞吐量、功能支持和默认调色板上全面占优
  3. 改进空间:所有GPU加速终端均存在可优化的延迟问题
  4. 特别提示:WSL用户可通过WSLtty使用MinTTY

尽管作者选择继续使用MinTTY,但指出所有终端仍有明显改进空间,特别是在闲置功耗优化方面。Windows Terminal虽功能全面,但其资源消耗(内存占用达conhost的10倍,CPU负载高60倍)值得开发者关注。

(注:本文测试基于Windows Terminal 1.18版本,1.19版已显著改善延迟问题)

评论总结

评论总结:

  1. 功能缺失问题
  • 有用户指出Windows Terminal仍缺少DOS的基本功能(如Ctrl-S暂停滚动) "Does it still pause scrolling...That's one big reason why I still live in a plain old DOS box"
  • 建议增加串口通信支持 "Any chance of getting native support for Serial (DB9/RS232) communication..."
  1. GPU渲染问题
  • 用户报告NVIDIA显卡的DXGI渲染存在问题 "specific rendering issues occur with default NVIDIA settings related to DXGI"
  • Vulkan渲染器存在内存泄漏问题 "experience some form of memory leak/latency when...open for a 'good' amount of time"
  1. 性能改进
  • 1.22版本通过PR优化使性能提升显著 "roughly doubled the terminal's throughput...made some scenarios up to 16x faster"
  • 提供具体优化链接作为证明 "included this PR: https://github.com.../pull/17510"
  1. 跨平台比较
  • 用户希望看到MacOS终端的基准测试 "Any similar benchmarks for MacOS?...they seem slower in the terminal"
  • 提供Linux终端延迟测试参考 "In case you want to compare the latency on Linux: https://beuke.org..."