写点什么

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

评论

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

揭秘APP自动化测试中弹窗异常处理的技术要点!

测吧(北京)科技有限公司

测试

​什么是 gRPC?​

NGINX开源社区

gRPC 云原生 Rest API HTTP/2

Hive引擎底层初探

京东科技开发者

阻碍团队使用工具的原因竟然是……

BY林子

审计 度量

盘点|《数据安全法》的62项配套「国家标准」(附下载)

极盾科技

数据安全

DTC2024,华为云数据库创新融合大发展,打造世界级数据库!

华为云开发者联盟

数据库 华为云 华为云数据库 华为云开发者联盟 企业号2024年4月PK榜

再获权威认可!天翼云论文被IEEE/ACM CCGrid收录

天翼云开发者社区

云计算 私有云 云网关

IaC:实现持续交付和 DevOps 自动化的关键

SEAL安全

DevOps 运维 CI/CD IaC

Python中2种常用数据可视化库:Bokeh和Altair

华为云开发者联盟

Python 数据可视化 华为云 华为云开发者联盟 企业号2024年4月PK榜

浅谈人工智能

天津汇柏科技有限公司

人工智能

一种融合指代消解序列标注方法在中文人名识别上的应用(上)

京东科技开发者

基于Redis实现基本抢红包算法

京东科技开发者

简单了解国密与信创的四大关系-行云管家

行云管家

信创 数据安全 国产化 国密

百度何俊杰:智能体生态,不是大玩家「独角戏」,而是全民「大合唱」

极客天地

【论文速读】| 大语言模型是边缘情况模糊测试器:通过FuzzGPT测试深度学习库

云起无垠

[行业经验] 混合云容灾混沌演练

腾讯云混沌演练平台

深蓝互动将启动《重返未来:1999》鸿蒙原生应用开发

最新动态

云主机AI服务的性能测试和优化

天翼云开发者社区

云计算 AI 云服务 云主机

【PolarDB-X从入门到精通】 第五讲:PolarDB集中式版安装部署(源码编译部署)

阿里云数据库开源

阿里云 技术学习 polarDB 技术干货 PolarDB-X

如何爬出Kotlin协程死锁的坑?

阿里技术

Java kotlin 协程死锁

免费在线OCR识别工具TextIn Tools,开启智能学习新时代

合合技术团队

合合信息 OCR识别 文字处理 扫描全能王

网络审计:为什么定期检查您的网络很重要

天翼云开发者社区

云计算 网络安全 网络审计

数据相关术语、英文翻译以及定义汇总看这里!

行云管家

数据 数据安全 企业数据

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