为什么Rust链接器在增量构建时没有更快?

我是 Rust 的新手,我试图理解为什么 Rust 不能构建得更快。我专门讨论最常见的情况,我对我的一个源文件做了一个小改动,然后我需要等待几秒钟cargo build才能完成它的工作。即使我的应用程序代码非常小,例如,如果我添加对 MySQL 和 Rocket 的依赖项,这两个 crate 也会附带它们自己的依赖项,显然这就是构建过程显着变慢的原因。显然,“慢”的意思是非常主观的,但是如果我需要等待 5-10 秒才能完成一天一百次的事情,我想知道为什么需要这样,我是否遗漏了什么.

在我看来,Cargo 并没有浪费太多时间来检查它是否需要重新编译这 200-300 个(子)依赖项中的任何一个,但需要这么长时间的是链接器。我试图了解链接器无法以某种方式优化该过程是否存在客观原因。例如,是否有可能以某种方式将整个 MySQL 和 Rocket 依赖项构建和缓存到两个更大的库中,并避免每次都执行所有这些工作?即使以二进制文件中的一些代码重复为代价。

顺便说一句,我尝试了 LLD 链接器(我使用的是 Ubuntu),它在一定程度上加快了速度,但它似乎仍然受到大量子依赖项的严重影响。

以上是为什么Rust链接器在增量构建时没有更快?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>