写点什么

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

评论

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

ArrayList源码分析及扩容机制

Ayue、

数据结构 ArrayList

微信及学生管理系统架构分析

summer

架构实战营

实现「双碳」目标 高光谱来助力

云计算

MySQL的存储引擎

卢卡多多

MySQL 数据库 7月日更

架构实战:模块一学习任务

buoge

架构实战营

金牛生态APP开发|金牛生态软件系统开发

一亩金田APP开发|一亩金田软件系统开发

模块一作业

king

架构实战营 模块一

Cingk

#架构实战营

FIL币价格今日行情!FIL币价格最新消息!

区块链 IPFS fil

中东矿业系统开发|中东矿业软件APP开发

vue必会面试题+答案

buchila11

Vue 3

保姆级:Markdown入门教程

Peter

互联网 写作 markdown 工具软件

模块一作业:微信业务架构图&学生管理平台

babos

#架构实战营

Rust从0到1-智能指针-Box<T>

rust 智能指针 smart pointer box

【LeetCode】大餐计数Java题解

Albert

算法 LeetCode 7月日更

巧妙!如何检测一个链表是否有环?

实力程序员

图的应用——最短路径

若尘

数据结构 最短路径

MindSpore模型精度调优实战:如何更快定位精度问题

华为云开发者联盟

模型 mindspore 精度 模型精度调优 静态特征

天空秘境APP开发|天空秘境软件系统开发

每天学习10个实用Javascript代码片段(二)

devpoint

JavaScript set 7月日更

模块一作业

俊杰

#架构实战营

基于标签的实时短视频推荐系统(三十)

Databri_AI

实时计算 推荐系统 标签

【Flutter 专题】94 初识 MediaQuery

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

毕业设计-学生管理系统架构设计

sophiahuxh

Pandas高级教程之:plot画图详解

程序那些事

Python 数据分析 程序那些事;

小萌猫短视频系统APP开发详情

架构实战营第一模块作业

tt

#架构实战营

Redisson 分布式锁源码 05:公平锁加锁

程序员小航

redis 源码 分布式锁 redisson redisson 分布式锁

Android系统 Bitmap 内存分配原理与优化

vivo互联网技术

android BitMap 内存优化

Go 学习笔记之 常量数据类型

架构精进之路

Go 语言 7月日更

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