“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

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

评论

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

设计千万级学生管理系统的考试试卷存储方案

唐诗宋词

千万级学生管理系统的考试试卷存储方案设计

大眼喵

「架构实战营」

【建议收藏】Redis知识干货汇总

利志分享

redis 面试

nginx配置系列(四)请求限制

乌龟哥哥

5月月更

他们连夜跑路了,原因是我给数据开发的学弟学妹写了个实习生年终总结

袁袁袁袁满

辛亥篇 「虛幣」起役《「內元宇宙」聯載》

因田木

類電子病歷

深度学习之解构卷积

AIWeker

人工智能 深度学习 卷积 convolution

模块四:学生管理系统考试试卷存储方案

jiaoxn

「架构实战营」

Continuous Integration 对 ABAP 技术栈来说意味着什么

Jerry Wang

持续集成 SAP abap 5月月更 持续优化

摸鱼即刻开始

程序员阿杜

Java 如何逆向遍历一个 List

HoneyMoose

DevOps系列之 —— DevOps概览(一)软件产业和交付模式发展趋势

若尘

DevOps 5月月更

运营好公众号需要具备的能力/技能

源字节1号

软件开发

[Day32-04]-[二叉树]二叉树的最近公共祖先

方勇(gopher)

LeetCode 二叉树 数据结构和算法

[Day32-05]-[BST] BST最近公共祖先

方勇(gopher)

LeetCode 二叉树 数据结构和算法

千万级学生管理系统的考试试卷存储方案

高山觅流水

「架构实战营」

架构实战营-模块四-作业

michael

架构实战营 #架构实战营 「架构实战营」

Gitea 如何配置自定义页面

HoneyMoose

Git进阶系列 | 1. 创建完美的提交

俞凡

git 最佳实践

在线Excel转XML工具

入门小站

工具

深度学习之解构基础网络结构

AIWeker

人工智能 深度学习 基础网络

如何在网站上安装 WordPress

海拥(haiyong.site)

WordPress 5月月更

深入理解 Go 中的字符串

宇宙之一粟

字符串 Go 语言 5月月更

MySQL三万字精华总结 + 面试100问吊打面试官绰绰有余

Java架构追梦

Java MySQL 程序员面试

Java 从一个 List 中删除重复的元素

HoneyMoose

C语言总结_字符串函数封装练习

DS小龙哥

5月月更

【51单片机】矩阵键盘

謓泽

5月月更 51单片机

SpringSecurity 表单登录

急需上岸的小谢

5月月更

[Day33-01]-[二叉树] 路径总和

方勇(gopher)

LeetCode 二叉树 数据结构和算法

redis性能调优--内存使用率过高

en

redis 内存

Nation3云上国家--一场基于Web3的社会实验(32/100)

hackstoic

DAO web3 nation3

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