在 2024 年 3 月如何加快 Rust 编译器的速度

主要观点:

  • 距离上一次关于 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 的相关链接和贡献者。
  • 详细说明了不同方面性能改善的具体数据和变化情况。
阅读 26
0 条评论