HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

评论

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

从P5~P8!最适合在职Java程序员学习提升路线大公开!

Java永远的神

程序人生 后端 架构师 java程序员 Java学习路线

Kyligence 当选 Gartner 2022 中国数据管理 Cool Vendor

Kyligence

Gartner 数据管理

数据中台的前世今生(一):数据仓库——数据应用需求的涌现

雨果

数据中台 数据仓库

Webpack中的plugin插件机制

Geek_02d948

webpack

Webpack插件核心原理

Geek_02d948

webpack

建木v2.5.7发布

Jianmu

DevOps 持续集成 CI/CD 自动化运维

koa实战

coder2028

node.js

千万级高并发秒杀系统设计套路!超详细解读~~

博文视点Broadview

Python继承还不会,看这篇就够了

芥末拌个饭吧

继承 python 3.5+ 10月月更

HashMap源码分析(三)

知识浅谈

HashMap底层原理 10月月更

车联网移动场景MQTT通信优化实践

EMQ映云科技

车联网 物联网 IoT mqtt 10月月更

面试官:你说说JavaScript中类型的转换机制

CoderBin

JavaScript 面试 前端 类型转换 10月月更

一文梳理2048小游戏从开发到上云全流程

华为云开发者联盟

云计算 游戏开发 华为云 企业号十月 PK 榜 2048小游戏

如何定义LED显示屏与OLED显示屏

Dylan

LED LED显示屏 OLED

为了讲明白继承和super、this关键字,群主发了20块钱群红包

华为云开发者联盟

开发 华为云 企业号十月 PK 榜 发红包

Visual Studio (VS2017)提交代码到Git服务器流程(GitCode)

DS小龙哥

10月月更

从零到一搭建一个属于自己的博客系统(弌)

木偶

django 前端 10月月更

银斯微推出跨平台APP生成、发布Non-Stop云服务“W-Hive”

科技热闻

细说nodejs的path模块

coder2028

node.js

企业架构-了解分布式

Marvin Ma

企业架构 分布式系统 凤凰架构 书籍拆解

你知道Redis有哪些潜在的阻塞点吗

芥末拌个饭吧

后端 redis 底层原理 10月月更

Webpack完整打包流程分析

Geek_02d948

webpack

Nodejs:ESModule和commonjs,傻傻分不清

coder2028

node.js

【小程序】一文读懂微信小程序登录流程及获取手机号

言程序

小程序 前端 10月月更

深入浅出--Linux基础命令知识(总结,配图文解释)

木偶

Linux ubuntu 10月月更

“程”风破浪的开发者|什么是web3.0,一文带你搞懂它

共饮一杯无

前沿技术 Web3.0 10月月更 “程”风破浪的开发者

深入nodejs的event-loop

coder2028

node.js

零信任时代安全沙箱成为企业应用必需品

FinClip

ScheduledThreadPoolExecutor踩过最痛的坑

小小怪下士

Java 程序员

【LeetCode】无法吃午餐的学生数量Java题解

Albert

算法 LeetCode 10月月更

钛媒体 | 发布PaaS平台2.0,元年科技通过自主技术撬起更大市场

元年技术洞察

媒体 PaaS

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