Windows Terminal性能再惹争议,难度相当于博士项目?
游戏引擎开发者和 Handmade Hero 项目的作者 Casey Muratori 在 Windows Terminal(以下简称为 WT)的 GitHub 仓库中发布了一个关于 WT 性能的 issue,引发了激烈的讨论。
Casey Muratori 在 issue 中指出,WT 在渲染彩色字符时比单色字符慢约 40 倍,并附上了用来测试的 benchmark 程序 TermBench。之后 Casey Muratori 与 WT 的成员在 issue 下展开了讨论,然而并没有得出统一意见,Casey Muratori 被认为 “把一个可以作为博士研究项目的问题看得过于简单”,并且该 issue 随后被关闭。
此后,Casey Muratori 直接在其 Handmade Hero 频道中发布了一个名为 “How fast should an unoptimized terminal run?” 的视频,视频中给出了相应的参考实现 RefTerm 作为对比,并详细描述 WT 的性能问题。该 RefTerm 支持回滚、换行、Unicode组合、RTL-over-LTR、多色字体、实时改变字体,渲染速度达几千 FPS。
How fast should an unoptimized terminal run?
<视频来源youtube>
不过,也有开发者对 Casey Muratori 在视频中实现的 RefTerm 提出了质疑,其看法主要包括:
构建时使用 /GS- /Gs999999set 命令行参数,这会禁用安全功能并且影响性能,而终端应用程序的主要工作是解析不受信任的输入。 该应用程序使用 0.5% 的 CPU 和高达 14% 的 GPU 来显示闪烁的光标,这并不高效。并且 RefTerm 应用程序在空闲时使用 351 MB 内存(使用 4k 显示器运行),而终端可接受的内存使用量约为 10-20 MB。
可靠性不足。终端是一个高风险的应用程序,因为它必须解析大量不受信任的文本,而在 RefTerm 中运行 splat refterm_debug_msvc.pdb 会导致 RefTerm 立即冻结并占用 100% 的 CPU。应用程序窗口无法关闭,只能通过任务管理器杀死。
目前,一个该 issue 的克隆已经发布:https://github.com/microsoft/terminal/issues/10461
并且同时打开了一个添加基于字形图集的 DxRenderer 的 issue:https://github.com/microsoft/terminal/issues/10461
感兴趣者可以前往了解最新信息。
END