Facebook正在改进其开源性能构建工具Buck,以加快开发速度并最大限度地减少测试Android应用程序代码更改所需的时间。Buck旨在加速、提高构建可重复性、提供正确的增量构建并帮助开发人员理解依赖关系。公司于2013年首次开源解决方案,我们一直在稳步提升Buck的性能,越来越多的其他组织接受并贡献了Buck。但这些改进本质上是渐进的,基于长期存在的关于软件如何开发的假设,Facebook的软件工程师JonathanKeljo在一篇文章中写道,Facebook质疑这些核心假设,这导致我们更多地了解Java语言和JavaCompiler内部细微差别。根据Keljo的说法,该团队已经完全重新设计了Buck编译Java代码的方式,以便为Android工程师提供新的性能改进。该解决方案还引入了常规管道,Keljo称其旨在缩短瓶颈并提高并行性以将构建时间减少10%。Buck通常能够并行构建多个规则。然而,瓶颈确实存在。如果一个常用规则需要一段时间来构建,它的其他依赖项必须等待,即使是小规则也会在具有足够多核心数的系统上造成瓶颈。规则管道现在允许在编译器仍然完成依赖项的同时编译依赖项规则。该功能现已开源,但默认未开启。该公司还宣布,仅源代码存根生成使依赖图变平,并将构建时间减少了30%。由于并行性增加,扁平化图形的生成速度更快,因为检查更改的路径更短。
