最初,我gradle用来构建我的android项目,但是最近,我将它迁移到了bazel,我发现它bazel真的很快gradle,所以我想知道为什么,但是文档bazel对此没有太多的了解,任何人都可以帮助我?
非常感谢!
Ulf*_*ams 13
完全披露:我在Bazel工作.
由于两个原因,这不是一个容易回答的问题.首先,性能高度依赖于场景.例如,我们通常希望干净的构建比只有一个文件发生变化的构建要慢.其次,我不知道Gradle如何在内部工作,他们最近做了很多工作来改善Gradle性能.
但我可以谈谈Bazel以及我们正在做些什么来加快速度.我们一直致力于构建性能约10年,早在我们公开之前就开始了.
关键特性是我们要求声明所有依赖项,并明确跟踪它们.如果在C++中使用头文件或依赖于Java库,则必须在BUILD文件中声明此依赖项(并且我们强制通过沙箱化单个操作来声明这些依赖项).这有三个效果:
首先,我们可以大量并行化构建,因为我们知道哪些事情取决于哪些事情.
其次,我们可以非常快速地进行增量构建,因为我们可以在更改特定文件(BUILD文件,头文件,源文件......)时告诉必须重新构建构建的哪些部分.
第三,我们几乎从不需要做干净的构建.其他构建工具通常需要"make clean"才能进入可预测状态 - 由于Bazel知道所有依赖项,因此它可以在每个构建上达到可预测状态.
另一个影响是我们可以远程缓存(即跨用户),甚至可以在另一台机器上执行,尽管在撰写本文时这些都不是完全支持的.
| 归档时间: |
|
| 查看次数: |
972 次 |
| 最近记录: |