写点什么

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

评论

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

自学编程的4大误区,你中招了吗?

田维常

程序员

如何在 OpenShift 中运行 Collabora Office

东风微鸣

openshift

HTTP 请求流程

coolion

大前端 浏览器 HTTP

腾讯高工亲授“MySQL学习方法”【思维导图+学习笔记+实战文档+面试题库】让你站在数据库领域的顶峰 笑傲江湖!

比伯

Java 编程 架构 面试 计算机

MySQL不会丢失数据的秘密,就藏在它的 7种日志里

程序员小富

MySQL

深入分析单例设计模式

Andy

加密数字货币钱包系统软件开发|加密数字货币钱包APP开发

系统开发

算法学习手册

田维常

算法

年底了,你的数据库密码安全吗

Simon

MySQL 数据库

28天写作挑战——坚持28天,每天500字

TGO鲲鹏会

28天写作 热门活动

使用PG_SHOW_PLANS监控PostgreSQL执行计划

PostgreSQLChina

数据库 postgresql 开源

换个角度,聊聊全链路压测

老张

性能测试 系统稳定性 全链路压测

Uniswap去中心化交易所系统开发

W13902449729

去中心化交易所系统开发 uniswap

VoltDB成功入选CNCF Landscape云原生数据库全景图

VoltDB

云原生 cncf VoltDB 分布式内存数据库

IoT爆发前夕,企业架构要面对哪些变革?

京东科技开发者

物联网

架构师训练营-第二周作业

Mark

再见 2020!Apache RocketMQ 发布 4.8.0,DLedger 模式全面提升!

阿里巴巴云原生

阿里云 开发者 云原生 存储 消息中间件

Java多线程并发控制工具信号量Semaphore,实现原理及案例

李尚智

Java Java并发 并发编程 后端

AMD台式CPU市场份额距离英特尔还有多远?刚到四分之一

E科讯

泪目!美团点评APP在移动网络性能优化的实践,附赠课程+题库

欢喜学安卓

android 程序员 面试 移动开发

架构师训练营第十三周

我是谁

架构师训练营第 1 期

Java多线程并发控制工具CountDownLatch,实现原理及案例

李尚智

Java 并发编程 后端

云算力挖矿系统APP开发|云算力挖矿软件开发

系统开发

看完老板哭着让我留下来!带你彻底搞懂Android启动速度优化!Android篇

欢喜学安卓

android 程序员 面试 移动开发

Filebeat同步写位点文件引发的磁盘IO问题

秦宝齐

探索压测奥妙

ninetyhe

微服务 分布式系统 压力测试 性能调试

零基础也能看得懂!Android面试心得必备技能储备详解,Android面试题及解析

欢喜学安卓

android 程序员 面试 移动开发

python 技术面试没过,居然是没有用 pytest 测试框架

和牛

Python 测试 测试框架 pytest

比易宝betBEB平台获278万美元约合1807万元融资

DT极客

架构师第7周作业

Geek_xq

软件测试---BUG的生命周期

测试人生路

软件测试

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