从14s到4s,我如何将 MacOS上的 Rust 增量编译时间减少70%?

"Rust 1.51引入的新配置split-debuginfo可以显著缩短MacOS上的编译时间。通过在Cargo.toml中启用`split-debuginfo="unpacked"`,开发者可以在不牺牲调试信息的情况下,将增量开发重建时间从14秒降低到4秒,提升了约70%的构建效率。这对于依赖传递性库的中小型Rust项目尤其有益。"
摘要由CSDN通过智能技术生成

????????关注后回复 “进群” ,拉你进程序员交流群????????

作者 | jakedeichert

整理 | 田晓旭

来源丨前端之巅(ID:frontshow)

Rust 1.51 发布之后,我注意到里面有一个新的特性 Cargo 可以帮助缩短 MacOS 的编译时间。升级启用了这个选项周,我的增量开发重建时间从 14s 缩短到了 4s。

加快构建速度

Rust 1.51 发行说明中,有一章节是专门介绍如何配置调试信息。默认情况下,在 MacOS 上,rustc 会运行一个名为 dsymutil 的工具,该工具会分析二进制文件,然后构建调试信息目录。

如果使用 cargo run 来开发构建,那么可能每次都会构建此调试信息,因为它是开发配置文件的默认设置。而在 Rust 1.51 中,我们可以配置 split-debuginfo,使其跳过 dsymutil。

Rust 1.51 发行说明:

现在,Rust backtraces 切换到使用其它后端,该后端支持加载 debuginfo 无需运行 dsymutil,并且该功能目前已经稳定。

有人认为,这个功能很快就会成为 MacOS 的默认配置。

如何配置呢?首先打开 Cargo.toml 并添加以下选项:

[profile.dev]
split-debuginfo = "unpacked"

如果你之前禁用了 debug,那么就无法生成调试信息,自然也就无法看到速度提升。如果你之前因为编译时间太久而禁用了 debug,那么现在可以重新打开,试试这个新方法吧。

到底能快多少?

Cargo 新特性到底能帮助 debug 提升多少呢?我自己构建了一个 Puzzle Panda 的拼图游戏网站,该网站是使用 Rust 编写的后端 API。经过我自己的测试,cargo run dev rebuilds 从之前的 14s 成功减少到了 4s,大约节省了 70% 的构建时间。

就项目规模而言,Puzzle Panda 的 Rust API 很小,但是它其中引入了很多传递性依赖关系,因此构建时间很长。14s 的 Dev rebuilds 时间是一直困扰我的问题,但是现在 split-debuginfo 的出现解决了我的难题。

至于 split-debuginfo 在中型 Rust 项目中,是否会有一样的项目,目前我还不确定。希望有感兴趣的人,能够实践并分享给我们。

参考链接:

https://jakedeichert.com/blog/reducing-rust-incremental-compilation-times-on-macos-by-70-percent/

-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

点击????卡片,关注后回复【面试题】即可获取

在看点这里好文分享给更多人↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值