Windows Terminal 的性能有多烂

2021-07-05 12:43:45 +08:00
 h404bi

Casey Muratori 最近在 Windows Terminal 的 GitHub issue tracker 发了一个反馈—— Extremely slow performance when processing virtual terminal sequences,表达了对 WT 性能的关注,他还写了一个 benchmark 程序 TermBench 来测试 WT 的渲染性能具体有多差(根据 Casey 表述,达到了惊人的 2 fps)。

issue 中 WT 的 member 们不断回复讨论“说明解释”运行慢的理由,后来为了避免讨论失控,给出了有意思的「 because we've made it hard, not because of some intrinsic quality of the universe. 」结论。不过还是未能说服 Casey,进一步激烈的讨论后 Casey 得到了「 what you’re doing is describing something that might be considered an entire doctoral research project in performant terminal emulation as “extremely simple” somewhat combatively. 」的论断,被认为把事情看得过于简单,因为终端性能这件事能作为 PhD 项目了。

Casey 当然不服,但 issue 已经被锁了。于是他在他的 Handmade Hero 频道上“罕见地”发布了一名为 How fast should an unoptimized terminal run? 的与 HandmadeHero 无关的视频(还调侃地写上了 Terminal PhD Dissertation )来论述 WT 到底有多慢,它能有多快:

https://www.youtube.com/watch?v=hxM8QmyZXtg

除了视频,还给出了相应的参考实现 RefTerm: https://github.com/cmuratori/refterm 作为对比。

Hacknernews 上也有对此的讨论串 https://news.ycombinator.com/item?id=27725133,虽然并没有太多讨论,但也有些挺有意思的,比如「 ... if your team lacks anyone with that intuitions, your team will spend their time finding “explanations” for the bad performance instead of fixing it. 」。

整个事件看下来,我对最近发布的 Windows 11 也有了新的感慨——无论再怎么更新,它依旧是一座大屎山,有些东西就是长年无法改变的,看看这个回复回复就知道。(逃)


Casey Muratori 是谁?

Casey Muratori 是一名经验丰富的游戏引擎开发者,参与过多款知名游戏的研发。他也是 Handmade Hero 项目的作者,如果你不了解 Handmade Hero,可以去搜索了解下。这个非常硬核的教学向项目发起于 2014 年,目标是不使用任何引擎,从头手写每一行代码来学习做出一款游戏。每周进行更新,至今已坚持近 7 年之久,超过 600 集视频,还衍生出如 4coder 等实际生产可用的项目。

13768 次点击
所在节点    Windows
80 条回复
bthulu
2021-07-05 16:11:50 +08:00
@charlie21 影响我在终端里打字, 我打字快的时候, 1 秒钟能打好几个, 2fps 就是我打的快的时候, 看到的文字就是闪现式的
6IbA2bj5ip3tK49j
2021-07-05 16:14:51 +08:00
@charlie21 cat/tail -f 大文件的时候,Windows terminal 就不够流畅。
Windows terminal 的水平在 linux/Mac 下看,压根不及格 🤷‍♂️
Trim21
2021-07-05 16:15:19 +08:00
@12101111 看了看作者的视频,他写的 refterm 也是用的 direct write 。
Helsing
2021-07-05 16:16:27 +08:00
@HankAviator #19
wsl2 的 IP 会变,以前 wsl 那种调用 adb 的方式不行了。
网上找的修改 adb 端口的脚本也不生效。
这个问题的 issue 还在 GitHub 上挂着呢
matrix67
2021-07-05 16:22:12 +08:00
@sneezry 对的,如同之前 GTA5 线上模式加载缓慢是因为 R 星渣优化 https://v2ex.com/t/757088

How I cut GTA Online loading times by 70%: https://news.ycombinator.com/item?id=26296339
这个真是经典。
HankAviator
2021-07-05 16:24:44 +08:00
@Helsing IP 变是 wsl2 的已知问题,没办法(狗头)不过 IP 变化的问题是在哪?
rioshikelong121
2021-07-05 16:39:54 +08:00
wsl2 的 memory leak 问题解决了么。
zlbruce
2021-07-05 17:07:17 +08:00
看了视频,差距确实很大,而且不仅仅是颜色的输出,而就是普通文本的输出。

refterm 也没有做过 profile,所以应该是性能的最低标准,从这来看 WT 实在是不够看。

另外,终端的输出性能,是能够影响程序输出到标准输出的效率的,难道不是一个终端的重要指标吗?
name1991
2021-07-05 17:09:39 +08:00
在用 window terminal,但是没感觉到明显的性能问题,是我的使用方式不一样?
zhea55
2021-07-05 17:51:06 +08:00
我在用新版 windows terminal,界面美观。目前发现的唯一问题是,有时候光标莫名其妙的消失了。
learningman
2021-07-05 17:53:19 +08:00
VSCode 里还有一套长得跟 jQuery 差不多的 API 咧。。。
ikas
2021-07-05 17:56:21 +08:00
You were overly confident in your opinion, but I hope this website helps you understand that it's actually really damn hard.
---
上来就搞个大新闻标题?送给你上面一样的话
zk8802
2021-07-05 18:32:40 +08:00
如果修复这个问题真的这么简单,那就请和 Casey Muratori 相同看法的人花点儿时间读一下相关代码,然后交个 PR 嘛。

工程上很多东西是没办法追求完美的,特别是在大公司里,归根结底是因为通向完美的路很遥远,而每个人和每个团队的精力都是极其有限的。极少有人愿意为了把一个功能做完美而加班。像 conhost 这种已经在维护模式,还被很多其它项目依赖的项目,要做大修改一定是需要走正式的立项流程的。在写代码之外也有不少精力是不得不花的,因此工程师必须做权衡才可以。

最后,很多嘲笑 Windows 是屎山的人没有错,但是他们往往忽略了微软在维护传统程序兼容性方面下的功夫。要解决屎山且不考虑兼容传统程序,难度比解决屎山且维持兼容性大非常多。从这个角度出发,Windows 对屎山的控制与解决做得比 Adobe 、Intel 以及绝大部分设备驱动好得多。
cest
2021-07-05 18:53:23 +08:00
@zk8802 #33 这里都是码农
当然是要 windows 学 macos 没事就要你重写 app,不然怎麽吃饭
win32 软件十几年不改还能用,不改订阅制都饿死了
zk8802
2021-07-05 18:58:18 +08:00
另外针对那个 GitHub issue 和 HackerNews 上的某些评论说几句:Be nice. 纯技术讨论不代表就要 present yourself as a dick. 归根结底读评论、写代码的都是人,没人喜欢不友善的评论。不友善的评论往往会让讨论偏离原本的方向,从技术评论变成了对自尊心的维护。
volks
2021-07-05 19:16:26 +08:00
「 because we've made it hard, not because of some intrinsic quality of the universe. 」是“他还只是个孩子,没看到他的努力吗”这个意思吗?
akira
2021-07-05 20:06:07 +08:00
wt...真的有谁在用么。。
Dragonphy
2021-07-05 20:12:29 +08:00
@akira
(#`-_ゝ-)请推荐一个 windows 平台下的终端
LokiSharp
2021-07-05 23:30:04 +08:00
真有人用这玩意?
mmdsun
2021-07-05 23:39:16 +08:00
说 Win 代码乱的 大杂烩 屎山的。完全是无稽之谈。搞得像看过 win11 源码一样。

Windows 早就 UI 和内核分离的。一个 experience pack 包直接升级 UI,还能把 Win10 界面变成 Xbox UI

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/787595

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX