主要观点:作者通过比较 Fedora 和 Windows 下的xterm
启动速度,找出 Windows 下xterm
启动慢的原因并解决。
关键信息:
- 作者有两台配置相似的机器,在 Fedora 和 Windows 间切换,日常工作多在浏览器或终端中进行。
xterm
在 Fedora 下约 300ms 可准备好,在 Windows 下约 1600ms 才能输入,慢 5 倍多。- 发现 Windows 终端的淡入动画导致约 200ms 延迟,通过调试工具
cdb
阻止该动画,启动速度提升至约 4 倍慢于 Fedora。 - 经性能测试,发现文件系统性能不是主要原因,X 服务器在 Windows 下运行稍慢但不是单独导致问题的原因,FreeType 也不是问题所在,最终确定是工具栏功能导致
XtRealizeWidget
调用慢。 - 通过
hyperfine
的参数扫描找到一些能节省约 200ms 的设置组合,但效果不明显。 - 采用服务器模式(
deferred mapping
),通过LD_PRELOAD
库和xargs
管理缓存,可快速启动新终端,最终 Windows 下xterm
启动时间降至约 366ms,仅比 Fedora 慢 60ms,可接受。
重要细节: - 在 Windows 性能设置中测试其他原生程序如
notepad
和calc
可瞬间出现。 - 作者使用的服务器为X410,其添加的动画效果无法直接禁用。
xterm
有很多功能,通过ltrace
找出XtRealizeWidget
调用慢是因为工具栏功能,在 Fedora 中该功能编译时被禁用。hyperfine
的参数扫描功能用于尝试不同设置组合以找到最优,找到如tekInhibit
等设置可节省时间。- 使用
xargs
和LD_PRELOAD
库实现服务器模式,通过pkill --oldest --signal SIGUSR1 xtermserver
快速启动新终端。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。