写点什么

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

评论

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

腾讯音乐:说说Redis脑裂问题?

王磊

Java 面试

PPTX文件怎么打开?2个技巧助你轻松搞定职场办公!

彭宏豪95

效率工具 PPT 在线白板 PPT模板 办公软件

缺陷管理与软件测试的作用

测吧(北京)科技有限公司

测试

UI 测试与接口测试的区别与应用

测吧(北京)科技有限公司

测试

小程序技术实现前端热更新的优势

FinFish

小程序容器 小程序技术 小程序热更新 小程序运行能力

软件开发流程简介及优化方法论:SCRUM、XP、DevOps

测吧(北京)科技有限公司

测试

发现不测的秘密:测试中常忽视的重要方面

测吧(北京)科技有限公司

测试

提高 RAG 应用准确度,时下流行的 Reranker 了解一下?

Zilliz

Zilliz rag reranker

Docker从入门到精通:Docker镜像相关命令学习

霍格沃兹测试开发学社

2024九章云极DataCanvas智算操作系统新品发布会震撼来袭!

九章云极DataCanvas

腾讯会议发布腾讯天籁inside3.0,为厂商提供AI音视频算法解决方案

极客天地

JS代码混淆器:iPaGuard — 让你的代码看起来令人头大

RUM 最佳实践-视觉稳定性的探索与实践

观测云

前端

从零基础到精通,抓包神器fiddler保姆级使用教程(一)

霍格沃兹测试开发学社

深入了解 Docker:革命性的容器化技术

霍格沃兹测试开发学社

鸿蒙HarmonyOS实战-ArkUI组件(RelativeContainer)

蜀道山

鸿蒙 HarmonyOS 鸿蒙开发 arkui ArkTS

分层测试体系与各类测试技术

测吧(北京)科技有限公司

测试

Docker从入门到精通:ubuntu系统安装docker

霍格沃兹测试开发学社

零基础到精通,Postman安装使用教程(一)

霍格沃兹测试开发学社

测试流程体系:传统、左移与右移的比较

测吧(北京)科技有限公司

测试

这些Git事故灾难, 你经历过几个?

前夕

git 面试 前端 后端 版本控制

单元测试的重要性与实践方法

测吧(北京)科技有限公司

测试

使用 TypeScript 从零搭建自己的 Web 框架:AOT 编译

RoyLin

typescript

《SQL必知必会(第5版)》PDF

程序员李木子

哨兵模式的悲和喜

算法的秘密

持续集成与持续交付:概念与实践

测吧(北京)科技有限公司

测试

白盒测试:原理与实际操作

测吧(北京)科技有限公司

测试

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