主要观点:
- 距离上一次关于 Rust 编译器性能更新已超六个月,现进行更新。
- 介绍了一些 Rust 编译器性能提升的重大改进,包括多个 PR 带来的不同方面的优化。
- 作者首次在没有提升编译速度方面的改进情况下撰写此更新,指出虽有改进但更难发现,且还有其他有用工作可做。
- 展示了 2023 - 08 - 23 到 2024 - 03 - 04 期间 Rust 编译器在总体性能方面的优秀结果,包括墙时间、峰值内存使用和二进制大小等方面的改善。
关键信息:
- [#115554]:在 Linux 上使 Rust 编译器以单个代码生成单元构建,带来墙时间和最大常驻集大小的减少以及二进制大小的减小,Windows 和 Mac 构建尚未进行此更改。
- [#117727]:使通过
#[derive(Debug)]
生成的所有Debug::fmt
方法标记为#[inline]
,在所有基准测试结果中带来墙时间和二进制大小的减少。 - [#119977]:引入缓存避免编译器内的许多哈希表查找,在所有基准测试结果中带来墙时间的减少。
- [#120055]:将编译器使用的 LLVM 版本升级到 LLVM 18,在所有基准测试结果中带来墙时间的减少。
- Cranelift 代码生成后端在 x86 - 64/Linux 和 ARM/Linux 上可供通用,是 rustc 使用的标准 LLVM 代码生成后端的替代方案,可用于调试构建。
- Jakub 通过默认排除调试信息大大减小了编译二进制文件的大小,对于小程序可减少磁盘大小达 10 倍。
- 2023 - 08 - 23 到 2024 - 03 - 04 期间,在墙时间、峰值内存使用和二进制大小方面都有显著改善,多数结果达到显著阈值,且从 2023 年 2 月到 2024 年 2 月编译时间下降了 15%。
重要细节:
- 性能测试在 Linux 上进行。
- 介绍了各个 PR 的相关链接和贡献者。
- 详细说明了不同方面性能改善的具体数据和变化情况。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。