写点什么

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

评论

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

AI加速前行,英特尔PT Expo演绎网络智能化新发展

E科讯

AI应用元年,豆包大模型为消费电子、游戏行业注入智能化创新动能

新消费日报

Volcano v1.10.0 版本正式发布!10大功能全面提升统一调度和细粒度资源管理能力

华为云原生团队

云计算 容器 云原生

利用反射扫描枚举生成数据字典数据

六哥是全栈

spring 反射 枚举 #java 数据字典

WiFi Explorer for mac:扫描查找无线网络并进行故障排除

Rose

macos big sur 软件icons图标大全(新增至2719枚大苏尔风格图标)

Rose

英特尔发布至强6性能核处理器,以更强性能助力算力升级

E科讯

苹果电脑批量重命名工具:A Better Finder Rename 12

Rose

Axure RP10汉化版激活秘钥 交互式原型设计

Rose

AI赋能制造未来,英特尔工博会展示创新成果

E科讯

云栖实录 | GenAI 时代 AI Infra 工程技术趋势与平台演进

阿里云大数据AI技术

人工智能 阿里云 云栖大会 PAI AI Infra

Illustrator 2021 for mac(ai 2021中文版)

Mac相关知识分享

小说

RAW 格式图像处理软件Capture One 23 Pro for mac

Mac相关知识分享

电脑死机的时候,CPU到底在做什么?

百度搜索:蓝易云

Arthas命令太难记了?安利一个IDEA插件!

江南一点雨

mac专用图片管理工具 PowerPhotos

Rose

犀牛Rhinoceros 7:渲染功能大升级,打造逼真视觉体验!

Rose

sublime text :轻量级的文本编辑器

Rose

微信多开防撤回工具WechatTweak for Mac

Mac相关知识分享

Service worker 入门手册

yuanyxh

JavaScript chrome Service Worker #前端

Git回退到上一次commit与pull

百度搜索:蓝易云

出发深维智信,拿offer去

王中阳Go

面试 面经 golang 面试

Royal TSX v6.0.2激活版 Mac强大的远程管理

Rose

Minitab Express Mac数据分析统计软件 v1.5.0激活版

Rose

给Java同仁单点的AI"开胃菜"--搭建一个自己的本地问答系统

京东零售技术

Java LLM

Linux学习笔记-Ubuntu系统下配置用户ssh只能访问git仓库

百度搜索:蓝易云

Docker启动容器报错:cannot allocate memory: unknown

百度搜索:蓝易云

SimpleMind Pro:一键理清思绪,高效思维导图工具

Rose

功能丰富文档编辑设计工具Author for Mac

Mac相关知识分享

Alfred 5 for Mac(高效功能工具)

Mac相关知识分享

【YashanDB知识库】windows配置ODBC跟踪日志, 使用日志定位问题

YashanDB

yashandb 崖山数据库 yashandb知识库

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