Cutting Down Rust Compile Times with One Thousand Crates
a year ago
- #Compilation
- #Performance
- #Rust
- Rust的编译时间可能成为显著瓶颈,对于大型代码库尤为明显。
- Feldera将SQL编译为Rust代码,复杂查询可能导致极长的编译时间。
- 某大型企业客户的SQL程序(8562行)转换为约10万行Rust代码后,编译耗时25-45分钟。
- 编译过程是单线程的,即便使用64核机器也仅能利用单核性能。
- 大部分时间消耗在LLVM优化阶段和代码生成环节,这些处理本质上是单线程的。
- 尝试增加codegen-units参数并未显著改善编译时长。
- 将生成的Rust代码拆分为1106个小型crate后实现了并行编译。
- 这一改进使编译时间从30-45分钟骤降至2分10秒。
- 每个crate采用内容哈希值命名,确保唯一性并支持高效的增量编译。
- 尽管取得进展,当前编译时间仍比理论最大值慢7倍,可能与硬件资源争用或其他瓶颈有关。