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