写点什么

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

评论

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

为什么有些程序员敲代码这么慢?

秃头小帅oi

Android开发中如何进行单元测试?

树上有只程序猿

android 单元测试

软件测试/人工智能丨知识图谱与模型驱动测试介绍及应用领域概述

测试人

人工智能 软件测试

1688订单详情API介绍(item_get-获得1688商品详情)

技术冰糖葫芦

API 接口

探索绿色之道:英特尔助力联想打造零碳智造工厂

E科讯

铭文市场火出圈,XRC-20有望继续演绎铭文市场神话

西柚子

GPT-4「变懒」问题将被修复;英伟达选择越南成公司“第二故乡”丨 RTE 开发者日报 Vol.104

声网

技术分享丨Amazon Q,新一代生成式人工智能助手

伊克罗德信息科技

人工智能 Amazon 亚马逊云科技 Amazon Q

云渲染对高层住宅立面渲染图优势、作用、影响

Renderbus瑞云渲染农场

云渲染 渲染农场 瑞云渲染 动画云渲染 效果图云渲染

包装效果图渲染技巧:怎么用云渲染省钱、省时间

Renderbus瑞云渲染农场

云渲染 云渲染农场 渲染农场

以不竭之动力 深耕人才沃土▕ 软通动力及子公司鸿湖万联共推开源人才培养

新消费日报

降低检索系统搭建门槛,轻松实现 RAG 应用!Zilliz Cloud Pipelines 惊喜上线

Zilliz

Zilliz AIGC zillizcloud rag

ETLCloud的应用策略——实时数据处理是关键

谷云科技RestCloud

ETL 实时数据

软件测试/人工智能丨如何使用知识图谱实现精准测试效果

测试人

人工智能 软件测试

Java多线程系列6:管程

BigBang!

Java多线程

OpenHarmony打造下一代智能终端操作系统根社区,繁茂人才生态

新消费日报

11月 Web3 游戏行业概览:市场回暖,未来趋势

Footprint Analytics

区块链游戏 gamefi web3游戏

边缘计算系统设计与实践

不在线第一只蜗牛

边缘计算 系统框架

数字化转型对企业有什么好处?

天津汇柏科技有限公司

数字化转型

共建开源新里程:北京航空航天大学OpenHarmony技术俱乐部正式揭牌成立

科技热闻

2023 OPPO ColorOS 全球创客大赛收官,见证潘塔纳尔生态日益繁荣

极客天地

从零开始实现Go搜索引擎(二)FST构造算法

geange

Go golang lucene 算法 FST

区块链加持卡奥斯天彩抽奖平台,现邀您免费抽奖!海量奖品等你薅

Openlab_cosmoplat

抽奖

铭文市场火出圈,XRC-20有望继续演绎铭文市场神话

小哈区块

深度解读GPTs的创建,搜索以及高级选项到底怎么用

Bob Lin

openai ChatGPT GPT-4 #LangChain GPTs

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