過(guò)去兩年多時(shí)間里,F(xiàn)acebook 公司的軟件團(tuán)隊(duì)一直在研究壓縮應(yīng)用程序代碼的方法,以期使應(yīng)用程序的大小更易于管理。經(jīng)過(guò)不懈努力,團(tuán)隊(duì)今天終于介紹了名為 Superpack 的新技術(shù)成果。
Facebook Engineering 今天更新的長(zhǎng)博文中,F(xiàn)acebook 軟件工程師 Sapan Bhatia 談到了管理應(yīng)用程序大小的獨(dú)特挑戰(zhàn)。他解釋說(shuō),F(xiàn)acebook 的開(kāi)發(fā)人員不斷向該公司的移動(dòng)應(yīng)用添加新的代碼,包括 Facebook 應(yīng)用、Messenger、WhatsApp 和 Instagram。
他說(shuō):“每天,開(kāi)發(fā)人員都會(huì)簽入大量的代碼,每一行代碼都會(huì)轉(zhuǎn)化為人們最終下載到手機(jī)上的應(yīng)用程序中的額外容量。如果不加以檢查,這些增加的代碼將使應(yīng)用程序越來(lái)越大,直到最后它的下載時(shí)間變得不可接受”。
Facebook的應(yīng)用程序開(kāi)發(fā)人員已經(jīng)采用了一堆數(shù)據(jù)壓縮技術(shù),但該公司表示,這些方法無(wú)法跟上它增加新功能和更新的速度。因此,在過(guò)去的兩年里,F(xiàn)acebook 的團(tuán)隊(duì)一直在研究 Superpack 技術(shù),它聲稱該技術(shù)已經(jīng)能夠?qū)崿F(xiàn)比現(xiàn)有工具“明顯更好”的壓縮率。
Bhatia 表示,Superpack 的優(yōu)勢(shì)在于它能夠壓縮特定類型的代碼,如機(jī)器碼和字節(jié)碼,以及某些種類的結(jié)構(gòu)化數(shù)據(jù)。他解釋說(shuō),Superpack 的基本底層方法是基于對(duì) Kolmogorov 的復(fù)雜性算法衡量的見(jiàn)解,它將一塊數(shù)據(jù)的信息含量定義為能夠生成該數(shù)據(jù)的最短程序的長(zhǎng)度。這意味著有可能通過(guò)將其表示為生成該數(shù)據(jù)的程序來(lái)壓縮數(shù)據(jù),而不是壓縮信息本身。
他寫道:“當(dāng)該數(shù)據(jù)是代碼開(kāi)始時(shí),那么它可以被轉(zhuǎn)化為具有更小的壓縮表示的數(shù)據(jù)。一個(gè)生成斐波那契數(shù)的程序加上一個(gè)索引列表,就是一個(gè)包含這種數(shù)字的文件的高度壓縮表示”。他補(bǔ)充說(shuō),減少 Kolmogorov 復(fù)雜性的想法在數(shù)據(jù)壓縮領(lǐng)域并不是一個(gè)新的想法。新的是,Superpack 采用了編譯器方法與現(xiàn)代壓縮技術(shù)的結(jié)合來(lái)實(shí)現(xiàn)這一目標(biāo)。
Bhatia 說(shuō),在過(guò)去的幾年里,F(xiàn)acebook 已經(jīng)采用了 Superpack 來(lái)控制開(kāi)發(fā)者引起的應(yīng)用程序的容量增長(zhǎng),實(shí)際上已經(jīng)設(shè)法減少了其 Android 應(yīng)用程序的大小。Bhatia寫道,“與普通的 Android APK 壓縮相比,應(yīng)用程序的平均大小減少了約20%”。
例如,在 Android 系統(tǒng)上的主要 Facebook 應(yīng)用程序,使用 Superpack 實(shí)際上已經(jīng)減少了 40% 以上,而 Messenger 已經(jīng)實(shí)現(xiàn)了 30% 以上的減少。由于沒(méi)有討論的原因,該技術(shù)在 WhatsApp 上似乎不太成功。
盡管Superpack被認(rèn)為是減少移動(dòng)應(yīng)用程序大小的一種方式,但Facebook相信它在許多其他需要數(shù)據(jù)壓縮的領(lǐng)域具有潛力。該公司目前正在努力將該技術(shù)應(yīng)用于一種新的按需可執(zhí)行文件格式,該格式可以通過(guò)保持共享庫(kù)的壓縮并在加載時(shí)才解碼來(lái)節(jié)省磁盤空間。
它還在考慮使用超級(jí)包來(lái)實(shí)現(xiàn)代碼的壓縮,以減少軟件更新的大小。最后,F(xiàn)acebook認(rèn)為有可能使用Superpack作為很少使用的冷存儲(chǔ)文件的壓縮器。Bhatia 說(shuō):“目前,Superpack 只對(duì)我們的工程師開(kāi)放,但我們希望把 Superpack 的好處帶給所有人,為此,我們正在探索如何提高我們的壓縮工作與Android生態(tài)系統(tǒng)的兼容性。我們可能有一天會(huì)考慮開(kāi)放 Superpack 的源代碼”。