Facebook展示Superpack壓縮技術:主Facebook應用容量已縮減40%以上
過去兩年多時間里,Facebook 公司的軟體團隊一直在研究壓縮應用程式代碼的方法,以期使應用程式的大小更易於管理。 經過不懈努力,團隊今天終於介紹了名為 Superpack 的新技術成果。
Facebook Engineering 今天更新的長博文中,Facebook 軟體工程師 Sapan Bhatia 談到了管理應用程式大小的獨特挑戰。 他解釋說,Facebook 的開發人員不斷向該公司的移動應用添加新的代碼,包括 Facebook 應用、Messenger、WhatsApp 和 Instagram。
他說:「每天,開發人員都會簽入大量的代碼,每一行代碼都會轉化為人們最終下載到手機上的應用程式中的額外容量。 如果不加以檢查,這些增加的代碼將使應用程式越來越大,直到最後它的下載時間變得不可接受”
Facebook的應用程式開發人員已經採用了一堆數據壓縮技術,但該公司表示,這些方法無法跟上它增加新功能和更新的速度。 因此,在過去的兩年裡,Facebook 的團隊一直在研究 Superpack 技術,它聲稱該技術已經能夠實現比現有工具”明顯更好”的壓縮率。
Bhatia 表示,Superpack 的優勢在於它能夠壓縮特定類型的代碼,如機器碼和位元組碼,以及某些種類的結構化數據。 他解釋說,Superpack的基本底層方法是基於對 Kolmogorov 的複雜性演算法衡量的見解,它將一塊數據的資訊含量定義為能夠生成該數據的最短程式的長度。 這意味著有可能通過將其表示為生成該數據的程式來壓縮數據,而不是壓縮資訊本身。
他寫道:「當該數據是代碼開始時,那麼它可以被轉化為具有更小的壓縮表示的數據。 一個生成斐波那契數的程式加上一個索引清單,就是一個包含這種數位的檔的高度壓縮表示” 他補充說,減少 Kolmogorov 複雜性的想法在數據壓縮領域並不是一個新的想法。 新的是,Superpack 採用了編譯器方法與現代壓縮技術的結合來實現這一目標。
Bhatia 說,在過去的幾年裡,Facebook 已經採用了 Superpack 來控制開發者引起的應用程式的容量增長,實際上已經設法減少了其 Android 應用程式的大小。 Bhatia寫道,”與普通的 Android APK 壓縮相比,應用程式的平均大小減少了約20%”。
例如,在 Android 系統上的主要 Facebook 應用程式,使用 Superpack 實際上已經減少了 40% 以上,而 Messenger 已經實現了 30% 以上的減少。 由於沒有討論的原因,該技術在 WhatsApp 上似乎不太成功。
儘管Superpack被認為是減少移動應用程式大小的一種方式,但Facebook相信它在許多其他需要數據壓縮的領域具有潛力。 該公司目前正在努力將該技術應用於一種新的按需可執行檔格式,該格式可以通過保持共用庫的壓縮並在載入時才解碼來節省磁碟空間。
它還在考慮使用超級包來實現代碼的壓縮,以減少軟體更新的大小。 最後,Facebook認為有可能使用Superpack作為很少使用的冷存儲檔的壓縮器。 Bhatia 說:「目前,Superpack 只對我們的工程師開放,但我們希望把 Superpack 的好處帶給所有人,為此,我們正在探索如何提高我們的壓縮工作與Android生態系統的相容性。 我們可能有一天會考慮開放 Superpack 的原始程式碼」。