過去兩年多時間里,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 的源代碼”。
【來源:希恩貝塔】