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