写点什么

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

评论

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

UI5应用部署到Fiori On-Premise和On-Cloud的Launchpad

汪子熙

Fiori SAP UI5 Launchpad

SAP CRM, C4C和Hybris的后台作业

汪子熙

CRM SAP C4C Hybris

WLS2搭建Django部署环境

IT蜗壳-Tango

5月日更

谈一谈Java的前生今世

孙叫兽

Java jdk 发展史

《觉醒年代》观后感

xiezhr

觉醒年代 五四运动 南陈北李

防火墙

escray

学习 极客时间 安全 5月日更 安全攻防技能30讲

动态控制SAP C4C UI元素的显示和隐藏

汪子熙

CRM SAP C4C Cloud for Customer

如何将Twitter的内容导入到SAP CRM和C4C

汪子熙

twitter CRM SAP C4C Cloud for Customer

SAP CRM WebClient UI和Hybris backoffice UI开发的相同点

汪子熙

CRM SAP abap WebClient UI Hybris

利用Excel导入数据到SAP C4C

汪子熙

Excel SAP C4C Cloud for Customer

Hybris开发环境的license计算实现

汪子熙

Java SAP Hybris Commerce Cloud

Java基础(一)——Java入门和IntelliJ IDEA使用

空城机

Java IDEA 5月日更

ABAP Netweaver, Hybris Commerce和SAP 云平台的登录认证

汪子熙

abap Netweaver Hybris Commerce Cloud

使用ABAP和JavaScript代码生成PDF文件的几种方式

汪子熙

JavaScript PDF abap Acrobat

UI5 Source code map机制的细节介绍

汪子熙

JavaScript SAP SAP UI5

Dubbo 路由规则之条件路由

青年IT男

dubbo

SAP Netweaver和Hybris的数据库层

汪子熙

abap Hybris

人生算法:掌控大脑的两种模式

石云升

读书笔记 思维模型 5月日更

ABAP Netweaver和Hybris里获得内存使用统计数据

汪子熙

Java CRM abap C4C Hybris

CRM WebClient UI和Hybris里工作中心跳转的url生成逻辑

汪子熙

CRM abap WebClient UI

小走神

Nydia

学习

PlatONE联盟链如何实现大规模生产级应用?

CECBC

中国与世界共享数字经济机遇

CECBC

数字经济

SAP CRM WebClient UI里的文件是如何上传到ABAP Netweaver后台的

汪子熙

chrome CRM SAP WebClient UI

Java 基础(一)——Java 入门

空城机

Java 5月日更

阿里巴巴P8自爆:Java八大核心思维导图知识梳理

Java架构师迁哥

使用Excel消费C4C的OData service

汪子熙

Excel SAP C4C OData

SAP成都C4C小李探花:浅谈Fiori Design Guidelines

汪子熙

大前端 Fiori SAP UI5

CRM WebUI and Hybris的Product页面标题实现

汪子熙

CRM SAP WebClient UI Hybris

着力区块链技术等方向,上海这所高校成立研究院

CECBC

多元线性回归模型 - DAY14

Qien Z.

5月日更 多元线性回归

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