写点什么

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

评论

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

实用机器学习笔记一:概述

打工人!

机器学习 深度学习 算法 学习笔记 12月日更

第五模块总结

张靖

#架构实战营

深化生态合作!博睿数据APM正式上架华为云严选商城

博睿数据

和12岁小同志搞创客开发:手撕代码,做一款火焰报警器

不脱发的程序猿

少儿编程 DIY 智能硬件 创客开发 Arduino

干货分享 | 深度解析云原生消息队列 AMQP

Apache Pulsar

架构 分布式 云原生 中间件 Apache Pulsar

一场关于元宇宙公司之死的剧本杀

白洞计划

嚯,这款AI建模工具实在太强大了,快来pick!

百度开发者中心

AI python编辑器

数创新境,ToB要做难而正确的事

ToB行业头条

架构团队如何重构内部系统

智联大前端

重构

产品对比:TeamCode DCS 与 Docker Dev Environment

Draven Gorden

云原生 团队协作 开发者工具 开发工具 开发环境

超赞圆形动画进度条,爱了爱了(使用HTML、CSS和bootstrap框架)

海拥(haiyong.site)

CSS 大前端 28天写作 签约计划第二季 12月日更

光传送网波分系统故障定位探索

鲸品堂

告警 告警光传送网、故障定位

vue框架的组件与组件通信方法

Changing Lin

12月日更

元气部落美拆芒趣一番赏盲盒app开发

风行无疆

万国数据发布首份ESG报告,承诺2030年同时实现碳中和及100%使用可再生能源

BeeWorks

QCon 北京|Apache Pulsar:云原生时代的消息服务

Apache Pulsar

开源 架构 分布式 云原生 Apache Pulsar

数据云平台助力企业数字化转型

星环科技

大数据 数字化 云平台

创业研发团队的组织建设-人才招聘

wood

创业 团队建设 28天写作

优酷播放黑科技 | 自由视角技术体验优化实践

阿里巴巴终端技术

ios android 移动应用 音视频 客户端开发

模块5作业

覃飞

凭什么说jdk11比jdk8好?

老地平线

JVM jdk8 JDK11

一周信创舆情观察(11.22~11.28)

统小信uos

几道蛮有意思的前端面试题

CRMEB

开发者实践丨Agora Home AI 音视频的未来

RTE开发者社区

音视频 开发者实践 RTE大赛

架构实战营 - 模块五作业

随风King

「架构实战营」

【福利】腾讯WeTest专有云解决方案,限时开放招募体验官

WeTest

spring security登录流程解析(用户名、密码模式)

Tracy-wen

译文|基于 Pulsar 的事件驱动铁路网

Apache Pulsar

开源 架构 分布式 中间件 Apache Pulsar

博文推荐|如何使用Apache Pulsar + Hudi 构建 Lakehouse

Apache Pulsar

Java 开源 架构 分布式 Apache Pulsar

从用户到开发者,日本独角兽 SmartNews 的社区二三事

Zilliz

数据库 推荐算法 流媒体

Istio 实践手册 | 服务网格介绍

xcbeyond

istio 服务网格 28天写作 12月日更 Istio 实践手册

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