在最新的一次基于 Rust 1.57.0 的测试中,笔者租用了一台 32c 64T 64G 配置的服务器,主频 3.1GHz,在不开启 sccache 时,能跑满全部 32c,编译时间也更短。而开启 sccache,cpu 利用较低,大概 30%的样子,关键时间变得更长了。
每次测试前,执行一次 cargo clean
(笔者有配置 sccache 缓存目录为系统全局目录)。
- 32c,3.1/3.4GHz,64G 时:
项目/策略 | cargo build | cargo build --release |
---|---|---|
关闭 sccache | 1m 01s | 1m 55s |
开启 sccache | 1m 25s | 2m 22s |
- 64c,2.5/2.7GHz 时:
项目/策略 | cargo build | cargo build --release |
---|---|---|
关闭 sccache | 1m 01s | 2m 02s |
- 16c,3.1/3.4GHz,32G 时:
项目/策略 | cargo build | cargo build --release |
---|---|---|
关闭 sccache | 1m 16s | 2m 15s |
关闭 sccache
CPU/编译项 | cargo build | cargo build --release |
---|---|---|
E3-1245 v2 | 1m 27s | 2m 55s |
6c 12T Macbook Pro 16’ i9 | 2m 13s | 3m 19s |
I3-9300T | 3m 26s | 6m 04s |
另一种 测试:
- 首次编译:重置系统、磁盘 && cargo build。
- 重新编译:cargo clean && cargo build 。
- 增量编译:vim src/main.rs && cargo build 。
CPU/编译项 | 首次编译 | 重新编译 | 增量编译 |
---|---|---|---|
E5 2.5/3.2GHz 16C 32G | 2m 17s | 1m 09s | 13.69s |
I7 4790K 4.4GHz 4C 8T 16G, MSI z97-Pc-Mate | 6m 05s | 1m 50s | 06.05s |
I7 4790K 4.4GHz 4C 8T 16G, ASUS z97 Gryphon | - | - | 04.51s |
I3 9300T 3.2GHz 4C 4T 32G-3200-x1 | - | 3m 36s | 05.84s |
6c 12T Macbook Pro 16’ i9 | - | 2m 13s | 09.06s |
- 4790K + ASUS z97 Gryphon
CPU项 | 内存 | 增量编译 |
---|---|---|
4.4GHz XMP 全自动 | 2400x1 | 04.51s |
4.7GHz XMP 手动47 | 2400x1 | 04.27s |
4.7GHz XMP 手动47 | 2400x2 | 04.37s |
4.7GHz XMP 手动47 | 1333x1 | 04.60s |
So,12核以上,会有比较好的收效 ?持续开发中,增量编译更考验单核性能 ?所以 12900k 超频,or 5950x 开PBO ?或者全上压缩机制冷,然后手动 超 ?…
以下废弃
七、Rust 构建提速
经过上一篇的案例,细心的读者应该已经注意到,Rust 的构建文件都放在了项目的 target 目录下,如果多个项目使用相同的依赖,依赖要完全重新编译,耗时还是挺久的。本节,我们学习使用 mozilla/sccache 来加速 Rust 构建过程。
以 zsh 为例
# CentOS 等 Linux 需先安装: yum install -y gcc openssl-devel
cargo install sccache
cat >> ~/.zshrc << EOF
export RUSTC_WRAPPER=sccache
EOF
source ~/.zshrc
- RUSTC_WRAPPER=sccache,这句一定要在
cargo install sccache
成功之后配置,否则会安装不上 sccache。
配置生效后,在对新工程执行 cargo build 时,能够一定程度提升速度。当然,新工程首次构建时,整体耗时还是有点久。
之后,在日常的编码中,只要不删除 target 目录,则每次执行 cargo build 时,只会对发生了修改的 rust 文件进行编译,就比较快了。
另,经笔者测试,高主频型 CPU 对这种日常编译帮助较多。~