...

Facebook 的 Superpack 數據壓縮技術可將(jiāng) Android App 大小減少 20%

2021-09-22

Facebook 軟件工程師 Sapan Bhatia 在一篇博客中指出,該團隊開(kāi)發(fā)了一種(zhǒng)名爲 Superpack 的技術;可以將(jiāng)編譯器分析與數據壓縮相結合,以發(fā)現超出傳統壓縮工具能(néng)力的大小優化。“Superpack 突破了壓縮的極限,實現了比現有壓縮工具更好(hǎo)的壓縮率。”

Bhatia 稱,在 Facebook 管理應用程序大小是一項獨特的挑戰:每天,開(kāi)發(fā)人員都(dōu)會(huì)檢查大量代碼,每一行代碼都(dōu)會(huì)轉化爲應用程序中的額外位,最終下載到用戶的手機上。如果不加檢查,這(zhè)個添加的代碼會(huì)使應用程序變得越來越大,直到最終其下載所耗的時(shí)間將(jiāng)變得不可接受。

所以 Facebook 團隊一直在研究 Superpack 技術。Bhatia 表示,在過(guò)去的兩(liǎng)年裡(lǐ),Facebook 采用了 Superpack 來控制開(kāi)發(fā)者引起(qǐ)的應用程序的增長(cháng),成(chéng)功地減少了其 Android 應用程序的大小。與常規的 Android APK 壓縮相比,這(zhè)些應用程序的規模已經(jīng)大幅縮小。與 Android 的默認 Zip 壓縮相比,平均節省了 20% 以上。

例如,在 Android 系統上的主要 Facebook 應用程序,使用 Superpack 實際上已經(jīng)減少了 40% 以上,而 Messenger 已經(jīng)實現了 30% 以上的減少。具體如下圖:

根據介紹,Superpack 的優勢在于它能(néng)夠壓縮特定類型的代碼(例如機器碼和字節碼),以及某些類型的結構化數據。Superpack 的底層方法基于對(duì) Kolmogorov 算法複雜性度量的洞察,它將(jiāng)一條數據的信息内容定義爲可以生成(chéng)該數據的最短程序的長(cháng)度。這(zhè)意味著(zhe)可以通過(guò)將(jiāng)數據表示爲生成(chéng)該數據的程序來壓縮數據,而不是壓縮信息本身。當該數據是開(kāi)始時(shí)的代碼時(shí),則可以將(jiāng)其轉換爲具有較小壓縮表示的數據。生成(chéng)斐波那契數字及其索引列表的程序是包含此類數字的文件的高度壓縮表示。

Bhatia 稱,降低 Kolmogorov 複雜度本身的想法在壓縮領域并不新鮮。Superpack 的新穎之處在于,結合了編譯器方法與現代壓縮技術來實現這(zhè)一目标。

Superpack 最初的目标是作爲一種(zhǒng)縮減移動應用程序大小的工具,但 Facebook 認爲它在許多其他需要數據壓縮的領域也具有潛力。該公司正在開(kāi)發(fā)一種(zhǒng)新的按需可執行文件格式,通過(guò)在加載時(shí)保持共享庫壓縮和解壓縮來節省磁盤空間;并正在考慮使用 Superpack 進(jìn)行代碼增量壓縮以減少軟件更新的大小。

此外,他們還(hái)在研究使用 Superpack 作爲冷存儲壓縮器,以壓縮很少使用的日志數據和文件。“目前,Superpack 僅供我們的工程師使用,但我們渴望將(jiāng) Superpack 的好(hǎo)處帶給每個人。爲此,我們正在探索提高壓縮工作與 Android 生态系統兼容性的方法......我們可能(néng)有一天會(huì)考慮開(kāi)源 Superpack。”


來源:oschina