写点什么

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

评论

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

ADManager Plus:面向微软的全面活动目录管理解决方案

运维有小邓

AD域 AD域管理

时序数据库 Apache IoTDB 毕业五周年,“对暗号”获取你的蛇年 T 恤!

Apache IoTDB

Playwright MCP浏览器自动化教程

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

挖掘PDF生成器中的SSRF漏洞:从发现到利用

qife122

网络安全 SSRF

EdgeOne Pages成为中小企业与开发者出海首选平台

极客天地

为什么财务团队要注重数据管理?

智达方通

企业管理 全面预算管理

最新 RPA 权威榜单出炉!排名对比,一文看懂谁在领跑市场

Techinsight

AI大模型如何生成PPT?7个主流PPT生成器大盘点

职场工具箱

PPT AI大模型 AIGC AI工具 AI生成PPT

腾讯集团副总裁李强:AI加速全球化竞争从规模扩张转向效率比拼

ToB行业头条

揭秘 CDC 技术:让数据库同步快人一步

谷云科技RestCloud

数据传输 数据同步 ETL CDC 数据集成工具

2025财务机器人选型全攻略:谁能成为企业“财务大脑”?

Techinsight

【新模型速递】PAI-Model Gallery云上一键部署Qwen3-Next系列模型

阿里云大数据AI技术

阿里云 大模型 通义千问 PAI

【喜报】矩阵起源 2 款深度合成服务算法顺利通过国家网信办备案

MatrixOrigin

人工智能 AI 算力 AI-ready

恒图科技×火山引擎:为全球用户打造智能创作新体验

新消费日报

大数据公有云市场第一,阿里云占比47%!

阿里云大数据AI技术

Chainlink Data Streams正式上线Sei网络,成为首选预言机基础设施

股市老人

鸿蒙5.0项目开发——V2装饰器@Event的使用

高心星

鸿蒙 装饰器 HarmonyOS5.0 V2装饰器 @Event

嘉银科技基于阿里云 Kafka Serverless 提升业务弹性能力,节省成本超过 20%

阿里巴巴云原生

kafka 阿里云 Serverless 云原生

Windows Defender防火墙配置错误与GPO:梳理关键点

运维有小邓

日志管理 日志审计 #日志分析

不仅仅是“局域网聊天”:BeeWorks 重新定义企业内网通信

BeeWorks

即时通讯 IM 私有化部署

局域网部署的团队协作工具推荐,助力高效办公

BeeWorks

即时通讯 IM 私有化部署

OpenTiny NEXT 内核新生:生成式UI × MCP,重塑前端交互新范式!

OpenTiny社区

AI 前端 智能化 OpenTiny MCP

数字化转型怎么做?加入西门子Xcelerator平台,开放资源与无限机遇等您探索!

科技热闻

跨境数据传输:ETL如何处理时区与日期格式差异

谷云科技RestCloud

MySQL API 数据传输 数据同步 ETL

MySQL 31 误删数据怎么办?

伤感汤姆布利柏

以数生智、以智驭数,矩阵起源产品发布会圆满落幕

MatrixOrigin

人工智能 AI 湖仓一体 多模态数据 AI-ready

金融保险行业 AD 域自动化管理解决方案

运维有小邓

AD域 AD域管理

重要:Java25正式发布(长期支持版)!

王磊

电商接口之电子面单API接口对接以及调用:以快递鸟为例

快递鸟

腾讯会议AI功能用户量同比增长超150%

极客天地

上线半年客户数增长超300%,腾讯云音视频低代码互动直播组件释放全球开发者生产力

极客天地

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