Facebook 的(de) Superpack 數據壓縮技術可将 Android App 大(dà)小減少 20%
Facebook 軟件工程師 Sapan Bhatia 在(zài)一(yī / yì /yí)篇博客中指出(chū),該團隊開發了(le/liǎo)一(yī / yì /yí)種名爲(wéi / wèi) Superpack 的(de)技術;可以(yǐ)将編譯器分析與數據壓縮相結合,以(yǐ)發現超出(chū)傳統壓縮工具能力的(de)大(dà)小優化。“Superpack 突破了(le/liǎo)壓縮的(de)極限,實現了(le/liǎo)比現有壓縮工具更好的(de)壓縮率。”
Bhatia 稱,在(zài) Facebook 管理應用程序大(dà)小是(shì)一(yī / yì /yí)項獨特的(de)挑戰:每天,開發人(rén)員都會檢查大(dà)量代碼,每一(yī / yì /yí)行代碼都會轉化爲(wéi / wèi)應用程序中的(de)額外位,最終下載到(dào)用戶的(de)手機上(shàng)。如果不(bù)加檢查,這(zhè)個(gè)添加的(de)代碼會使應用程序變得越來(lái)越大(dà),直到(dào)最終其下載所耗的(de)時(shí)間将變得不(bù)可接受。
所以(yǐ) Facebook 團隊一(yī / yì /yí)直在(zài)研究 Superpack 技術。Bhatia 表示,在(zài)過去的(de)兩年裏,Facebook 采用了(le/liǎo) Superpack 來(lái)控制開發者引起的(de)應用程序的(de)增長,成功地(dì / de)減少了(le/liǎo)其 Android 應用程序的(de)大(dà)小。與常規的(de) Android APK 壓縮相比,這(zhè)些應用程序的(de)規模已經大(dà)幅縮小。與 Android 的(de)默認 Zip 壓縮相比,平均節省了(le/liǎo) 20% 以(yǐ)上(shàng)。
例如,在(zài) Android 系統上(shàng)的(de)主要(yào / yāo) Facebook 應用程序,使用 Superpack 實際上(shàng)已經減少了(le/liǎo) 40% 以(yǐ)上(shàng),而(ér) Messenger 已經實現了(le/liǎo) 30% 以(yǐ)上(shàng)的(de)減少。具體如下圖:
根據介紹,Superpack 的(de)優勢在(zài)于(yú)它能夠壓縮特定類型的(de)代碼(例如機器碼和(hé / huò)字節碼),以(yǐ)及某些類型的(de)結構化數據。Superpack 的(de)底層方法基于(yú)對 Kolmogorov 算法複雜性度量的(de)洞察,它将一(yī / yì /yí)條數據的(de)信息内容定義爲(wéi / wèi)可以(yǐ)生成該數據的(de)最短程序的(de)長度。這(zhè)意味着可以(yǐ)通過将數據表示爲(wéi / wèi)生成該數據的(de)程序來(lái)壓縮數據,而(ér)不(bù)是(shì)壓縮信息本身。當該數據是(shì)開始時(shí)的(de)代碼時(shí),則可以(yǐ)将其轉換爲(wéi / wèi)具有較小壓縮表示的(de)數據。生成斐波那契數字及其索引列表的(de)程序是(shì)包含此類數字的(de)文件的(de)高度壓縮表示。
Bhatia 稱,降低 Kolmogorov 複雜度本身的(de)想法在(zài)壓縮領域并不(bù)新鮮。Superpack 的(de)新穎之(zhī)處在(zài)于(yú),結合了(le/liǎo)編譯器方法與現代壓縮技術來(lái)實現這(zhè)一(yī / yì /yí)目标。
Superpack 最初的(de)目标是(shì)作爲(wéi / wèi)一(yī / yì /yí)種縮減移動應用程序大(dà)小的(de)工具,但 Facebook 認爲(wéi / wèi)它在(zài)許多其他(tā)需要(yào / yāo)數據壓縮的(de)領域也(yě)具有潛力。該公司正在(zài)開發一(yī / yì /yí)種新的(de)按需可執行文件格式,通過在(zài)加載時(shí)保持共享庫壓縮和(hé / huò)解壓縮來(lái)節省磁盤空間;并正在(zài)考慮使用 Superpack 進行代碼增量壓縮以(yǐ)減少軟件更新的(de)大(dà)小。
此外,他(tā)們還在(zài)研究使用 Superpack 作爲(wéi / wèi)冷存儲壓縮器,以(yǐ)壓縮很少使用的(de)日志數據和(hé / huò)文件。“目前,Superpack 僅供我們的(de)工程師使用,但我們渴望将 Superpack 的(de)好處帶給每個(gè)人(rén)。爲(wéi / wèi)此,我們正在(zài)探索提高壓縮工作與 Android 生态系統兼容性的(de)方法......我們可能有一(yī / yì /yí)天會考慮開源 Superpack。”