Facebook為Android程序員增加開源新特性,大幅度修改Buck!
Facebook正在改進其開源性能構建工具Buck,以加快開發(fā)速度并***限度縮短在Android應用程序中測試代碼更改所需的時間。
Buck旨在加速、增加構建的可重復性,提供正確的增量構建并幫助開發(fā)人員理解依賴關系。該公司在2013年***開放開源解決方案。
我們一直在穩(wěn)步提高Buck的表現,加上越來越多的其他組織已經接受Buck,并作出了貢獻。但是,這些改進本質上是漸進的,基于對軟件開發(fā)方式的長期假設,Facebook的軟件工程師Jonathan Keljo在一篇文章中寫道,Facebook對這些核心假設提出質疑,這導致我們深入了解Java語言和Java編譯器內部的細微差別。
據Keljo表示,該團隊已經完全重新設計了Buck編譯Java代碼的方式,以便為Android工程師提供新的性能改進。
該解決方案還引入了規(guī)則流水線,Keljo說這是設計用于縮短瓶頸,并增加并行性以減少10%的構建時間。
Buck通常能夠并行建立多個規(guī)則。但是,瓶頸確實存在。如果一個常用的規(guī)則需要一段時間來建立,它的其他依賴關系必須等待,即使很小的規(guī)則可能會導致核心數量足夠高的系統(tǒng)出現瓶頸。
規(guī)則流水線現在允許依賴規(guī)則編譯,而編譯器仍然完成依賴關系。此功能現在可在開源中使用,但默認情況下未打開。
該公司還宣布僅源代碼存根生成平坦化依賴關系圖,并減少30%的構建時間。扁平圖生成速度更快,這是因為增加了并行性,因為需要檢查變化的路徑更短。

























