作者mshockwave (夏克维夫)
看板CompilerDev
标题[分享] LLVM 预设使用新的PassManager
时间Wed Feb 17 12:35:18 2021
好像有一点lag了 但LLVM现在预设使用新的 PassManager了:
https://tinyurl.com/296ekhzz
这改动包括Clang, LLD, 还有 gold (LTO) plugin
新的 PassManager 在(编译器本身)运行速度还有记忆体消耗上都有显着的改善
至於编译出来的程式品质的话...我是没听说有变比较快 应该还是差不多
如果单纯只是使用clang、这改动基本上没什麽差,但如果你有写 LLVM Pass 的话、
新的PassManager很遗憾的不相容旧的Pass。就连 plugin 也不会相容。
opt的关於除错Pass相关的CLI flags也有些许的不一样。
个人是蛮乐见这件事成真的啦 因为编译速度真的是常被忽略的一个课题
可能许多人还以为只有 JIT 才要在意编译速度,但事实上很多传统的软体(例如
Chromium) 规模已经大到编译时间会太长而拖垮生产力XDDD
其他领域例如游戏开发也有这个问题。在LLVM mailing list 上就偶尔会听到
来自 Unity Game Engine 的人点出编译速度问题,PlayStation的人也反映相同的问题
现在社群里面在讨论的是也要把 code generation pipeline更新为新的 PassManager
因为目前 code generation Pass,也就是那些处理 MachineFunction 的 Pass,还是
用旧的体系。我个人对这个倒是没什麽特别的感觉,因为如果要改善 codegen 部分的
速度,要优化的应该是 instruction selection 或者甚至 register allocation
的演算法,因为这两位才是最大的效能瓶颈
以上个人一点浅见<(_ _)>
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 169.234.228.165 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/CompilerDev/M.1613536521.A.B87.html
1F:推 PsMonkey: GWT 的编译速度已经被讦谯十几年了 XD 02/17 15:51
2F:推 Lipraxde: Instruction selection 和 register allocation 确实是 02/19 22:49
3F:→ Lipraxde: 占蛮多时间,不过在 function 小且数量多的时候花在旧 02/19 22:49
4F:→ Lipraxde: 的 pass manager 上的时间我是觉得蛮有感的 02/19 22:49
5F:→ Lipraxde: 不过我不知道换成用新的可以快多少就是了 02/19 22:50
6F:推 ChampYen: 感谢新知 02/20 01:00
7F:推 eopXD: 推推!! 08/22 16:05