为什么 Rust 不太关心编译器性能?

主要观点:

  • Rust 常被抱怨反馈循环慢和编译时间长,这是 Rust 开发者常见的不满,作者自身也是如此。
  • 尽管 Rust 项目团队一直在努力改善编译器性能,如每周处理性能改进和回归问题、运行基准测试套件等,且过去几年 Rust 构建性能有了很大提升,但对于许多开发者来说仍不够快。
  • 关于是否能实现接近即时的编译速度存在争议,作者认为在某些情况下可行,但需要做出一些权衡。
  • 目前已有多种加快编译过程的方法,但有些尚未准备好广泛使用,而有些可以立即采用。
  • 编译器性能提升困难的原因包括代码量大、技术债务、需考虑各种权衡、维护难度大、内部更改复杂以及需要同时兼顾其他工作等。
  • 除了性能,Rust 项目还有其他优先级,如保持编译器稳定、添加新功能等,这些也需要时间和精力。
  • 编译器性能的提升最终取决于贡献者,Rust 项目有项目目标计划来激励更多人参与,同时资金也很重要。

关键信息:

  • 作者通过在hyperqueue上的实验展示 Rust 编译器在过去几年的性能提升,如1.61.01.87.0版本的编译时间缩短。
  • 介绍了多种加快编译的方法,如并行前端、替代代码生成后端、默认更快的链接器等。
  • 详细阐述了编译器性能提升困难的技术、优先级和贡献者等方面的原因。
  • 提及 Rust 项目的其他工作,如保持稳定、添加新功能、处理大量 PR 和 issue 等。
  • 作者希望通过调查等方式了解用户瓶颈,改善编译器性能,并欢迎更多人参与。

重要细节:

  • 作者个人是 Rust 编译器性能工作组成员,对相关问题很重视。
  • 不同开发者对 Rust 编译时间的感受不同,C++开发者可能不介意,Python 开发者可能不太满意。
  • 编译器性能提升的两种方式:改善特定编译工作流和进行大规模更改与重构。
  • 进行大规模更改时需考虑与其他更改的冲突、维护难度等。
  • Rust 项目有 8 个 Tier 1 目标和 91 个 Tier 2 目标,需要大量工作来维护。
  • Rust 语言和编译器不断添加新功能,这会影响性能。
  • Rust 项目主要由志愿者贡献,资金也很重要。
  • 作者自身的经历表明,参与维护 Rust 其他方面工作也可能间接影响编译器性能。
阅读 16
0 条评论