2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

从 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:094386

评论

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

细数华为云云原生产品及五大开源实践

华为云开发者联盟

云计算 云原生 后端 华为云 企业号 1 月 PK 榜

Intel 联合测试:YMatrix 并发查询 TPS 最高达 163 万

YMatrix 超融合数据库

intel 超融合数据库 HTAP 场景实践 YMatrix tpcb

玩转OpenHarmony社交场景:即时通讯平台

OpenHarmony开发者

OpenHarmony

性能成本难两全?OpenMLDB 实时计算双存储引擎让你不必纠结(附测评报告)

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

消息服务 + Serverless 函数计算如何助力企业降本提效?

阿里巴巴云原生

阿里云 云原生 消息队列

14条日常维护LED显示屏的建议

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

专访 | 刘嘉松:开源,互惠且共赢

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

OpenMLDB 祝大家新年快乐!

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

架构实战 - 模块 5 作业

mm

Spring Security怎么添加图片验证功能?

小小怪下士

Java spring spring security

巧用数据分析表达式,让数据指标创建更简单

葡萄城技术团队

模块2作业分享思路

程序员小张

「架构实战营」

专精特新小巨人VC/PE覆盖率24.2%;上市649家;北京以589家位居城市榜首丨创业邦发布《2022专精特新小巨人发展报告》

创业邦

如何使用自助式商业智能 (BI) 避免组织中的数据孤岛

葡萄城技术团队

.net可视化表单设计工具

力软低代码开发平台

微服务应用视角解读如何选择 K8s 的弹性策略

阿里巴巴云原生

阿里云 微服务 云原生

数据赋能的未来,看向嵌入式BI

葡萄城技术团队

朋友圈高性能复杂度

生活需要激情

架构训练营10期

元年科技2022回顾:奋楫扬帆数字化,转型升级立潮头

元年技术洞察

数字化转型 财务数字化 方舟平台 管理会计

视觉大模型训练和推理加速

Baidu AICLOUD

异构计算 AI加速 云原生AI 百度百舸

技术贴 | SQL编译与执行-parser

KaiwuDB

Java常见异常:NPE空指针异常怎么解决?

千锋IT教育

万物皆可集成系列:低代码对接微信小程序

葡萄城技术团队

商业智能BI工具评估指南

葡萄城技术团队

【Paper Reading】Cloud-Native Transactions and Analytics in SingleStore

阿里云数据库开源

数据库 阿里云 开源 分布式 云原生

Monorepo 下 Git 工作流的最佳实践

字节跳动终端技术

git Monorepo

如何使用 NFTScan 追踪 NFT 巨鲸

NFT Research

NFT 数据基础设施

回顾 OpenMLDB 2022 之旅 | 开源之路,行将致远

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

Postman 进阶技巧

世开 Coding

Postman API

nova 6升级HarmonyOS 3正式版,即刻体验随心百变的个性化桌面

极客天地

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