AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

评论

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

通过ModelScope开源Embedding模型将图片转换为向量

DashVector

人工智能 数据库 大数据 大模型

构建安全基石:反射API与代码注入防护的集成方案

技术冰糖葫芦

api 网关 API Gateway API 文档 API 测试 pinduoduo API

输入一段文字,瞬间生成应用。Furion低代码平台与AI协同工作,展现出非凡的效率与精准。

天津汇柏科技有限公司

低代码 低代码平台 AI 人工智能

张靓颖时隔9年华为发布会再唱《我的梦》,来华为音乐赏高燃重现

最新动态

相约华中科技大学,移动云技术论坛来了!NineData受邀参会并分享

NineData

移动云 NineData 华中科技大学

TDengine 首席架构师肖波演讲整理:探索新型电力系统的五大关键场景与挑战

TDengine

数据库 tdengine 时序数据库

以创新保障数据安全,华为云空间亮相国家网络安全宣传周

最新动态

AI假图检测:Deepfake层出不穷,怎么才能“有图有真相”?

合合技术团队

科技 AIGC deepfake

如何将图片转换为向量?(通过DashScope API调用)

DashVector

人工智能 数据库 大数据

无代码情报处理漫谈

数由科技

低代码 ETL 无代码 AI模型 情报处理

客服测试流水线编排设计思路和准入准出应用|得物技术

得物技术

流水线 企业号2024年8月PK榜 质量平台

魔乐开发者社区正式上线,AI开发者快来撩!

天翼云开发者社区

开发者社区 天翼云

虚拟机热迁移技术介绍

天翼云开发者社区

云计算 虚拟机

华为发布会开场舞《见非凡》诠释卓越品质,Hi-Res原曲上线华为音乐

最新动态

在广袤的数据通信旷野,“伙伴+华为”体系点亮星云

脑极体

通信

TextIn ParseX:助力开发者解析版面元素信息

合合技术团队

科技 textin

终于!!把企业轻量级数据中台的构建路径理清了!

RestCloud

数据中台 ETL 数据管理 企业数据中台

运维安全审计系统厂家有哪些?推荐哪家?

行云管家

运维 行云管家 安全运维

解锁数据潜力,天翼云TeleDB为企业数智蝶变添力赋能!

天翼云开发者社区

数据库 云计算 云原生 天翼云

从表级血缘、列级血缘到算子级血缘,给企业数据管理带来哪些帮助?

Aloudata

全链路数据血缘 数据血缘 数据链路 主动元数据

选购小间距LED屏幕的技巧

Dylan

技术 分辨率 LED显示屏 led显示屏厂家 市场

人工智能 | ChatGPT 插件开发

测试人

人工智能 软件测试

论文解读 -TongGu

合合技术团队

科技 论文

ChatGPT 插件开发

霍格沃兹测试开发学社

强化安全防线:融合反射API与代码注入防护的综合策略

代码忍者

API 文档 API 测试

如何让JS代码变的安全?

天翼云开发者社区

前端 网络安全

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