写点什么

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

  • 2021-04-19
  • 本文字数:781 字

    阅读完需:约 3 分钟

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

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/

2021-04-19 14:094210

评论

发布
暂无评论
发现更多内容

架構師訓練營第1期-第01周總結

Panda

架构师训练营大作业二

qihuajun

“锟斤拷”的前世今生

Java旅途

Unicode 编码 ASCII 锟斤拷

互联网架构师能力图谱

dony.zhang

架构师 架构师技能

拖动旋转的 3D 骰子效果

Clloz

CSS transform rotate3d

SpringCloud Gateway 身份认证

Barry的异想世界

微服务 nacos 权限系统 Gateway spring cloud alibaba

架构师训练营大作业一

qihuajun

食堂就餐卡系统设计

发酵的死神

极客大学架构师训练营

第一周总结

睁眼看世界

极客大学架构师训练营

使用枚举的正确姿势

Java旅途

Java 单例 枚举

第一周总结

黄立

架构师 架构总结

Spring-技术专题-重试机制Retry机制

码界西柚

食堂就餐卡系统设计

Gosling

极客大学架构师训练营

极客大学架构师训练营 0 期 结课作业

chun1123

架构师 架构师技能

食堂就餐系统 UML 图

睁眼看世界

极客大学架构师训练营 食堂就餐系统

有了数据湖探索服务,企业决策“新”中有数

华为云开发者联盟

Serverless 数据湖 数据分析 云原生 华为云

为什么我选择清晨阅读和学习

胡迪伦

学习 效率 自学编程 早起 晨型人

食堂就餐卡系统设计

天天向上

极客大学架构师训练营

一个敏捷教练成长必备的8项技能

华为云开发者联盟

程序员 敏捷 敏捷开发 敏捷教练 技术技能树

开发者说:愿为你点亮“懂环境知冷暖”智能的灯

华为云开发者联盟

人工智能 物联网 NB-IoT 路灯 华为IoT平台

架构师训练营大作业

方堃

超详细超级细B站视频爬取

海绵宝宝re儿

python 爬虫 多进程

你有没有想过为什么交易和退款要拆开不同的表?

程序员小航

设计 开发 交易 拆表

解构 Dubbo-go 的核心注册引擎 Nacos

apache/dubbo-go

dubbogo

防止重复点击2.0

老菜鸟

Vue

第一周学习心得

alpha

极客大学架构师训练营

iOS面试梳理 - 2020年8月初

iOSer

ios 面试

小码农也有大目标,最新BAT大厂Java面试总结

Java架构师迁哥

【性能优化】小伙伴问我性能指标监控怎么做,这次我安排上了!!

冰河

tomcat 性能优化 监控 性能调优 jvm调优

10大高性能开发宝石

码界西柚

大作业

从14s到4s,我如何将 macOS上的 Rust 增量编译时间减少70%?_大前端_jakedeichert_InfoQ精选文章