近日,Facebook團隊宣布了一種名為 Superpack 壓縮器,Superpack 是一種非對稱壓縮器,解壓速度快,但壓縮速度慢,可以將編譯器分析與資料壓縮相結合,優化傳統壓縮工具的部分功能,Superpack 突破了壓縮技術的極限,實作了比現有壓縮工具更好的壓縮率,Superpack 現已應用于結構化資料、代碼、整數和字串資料,它目前不支持影像、視頻或聲音檔案的壓縮,
Facebook開發團隊認為, Facebook 應用程式的體積變得越來越大,最終下載所需的時間也隨之增加,由于壓縮檔案占用的空間更少,這意味著小體積應用程式可以被更快下載,尤其在移動帶寬有限、下載大型應用程式成本高昂的地區,可以節省帶寬資源,因此,他們開發了一種稱為 Superpack 的壓縮技術,
下面是使用 Superpack 壓縮器的應用程式與其他壓縮方式的對比圖,Superpack 與常規的 Android APK 壓縮相比,這些應用程式體積明顯變小(如圖一所示);與 Android 的默認 Zip 壓縮相比,平均節省了 20% 以上(如圖二所示),


Superpack 的優勢
Superpack 的優勢在于壓縮代碼,例如機器碼和位元組碼,以及其他型別的結構化資料,Superpack 的底層方法基于對Kolmogorov 演算法復雜性度量的洞察,它將一條資料的資訊內容定義為可以生成該資料的最短程式的長度,雖然降低 Kolmogorov 復雜度本身的想法在壓縮領域并不新鮮,Superpack 的新穎方法包括將編譯器方法與現代壓縮技術相結合來實作這一目標,Superpack也通過以下幾點來提高壓縮效率,
- 改進了 LZ 決議——Superpack 能夠發現更長的重復序列,同時減少表示指標的位數,從而改進了 LZ 決議程序,
- 改進了熵編碼——Superpack 具有內置的非對稱數字系統( ANS)編碼器,也支持多個編碼后端的可插拔架構,Superpack 通過識別要表示的文字具有較低熵的背景關系,來改進熵編碼,
- 解決資料包含非結構化值——Superpack 壓縮時通過將非結構化值轉換為程式來借用值結構,然后,在解壓時,程式被解釋以恢復原始資料,
- Superpack 主要針對三種有效載荷——第一個是 Dex 位元組碼,Java 在 Android 應用程式中編譯成的格式,第二個是ARM機器碼,是為ARM處理器編譯的代碼,第三個是 Hermes 位元組碼,它是 Facebook 創建的一種專門的 Javascript 高性能位元組碼表示,Zip、Xz 和 Superpack 對這三種格式產生的壓縮率如下表所示,

**Superpack 架構與未來發展
Facebook 為了擴展 Superpack 開發和使用,研究了一種具有抽象的模塊化設計,可以在不同格式中重復使用,Superpack 的架構類似于作業系統,其內核實作分頁記憶體分配、檔案和存檔抽象、轉換和操作指令的抽象,以及可插拔模塊的介面,

Superpack 最初的目標是作為一種縮減移動應用程式大小的工具,但 Facebook 認為它在許多其他需要資料壓縮的領域也具有潛力,該公司正在開發一種新的按需可執行檔案格式,通過在加載時保持共享庫壓縮和解壓縮來節省磁盤空間,考慮使用 Superpack 進行代碼增量壓縮以減少軟體更新的大小,此外,Facebook開發團隊還在研究使用 Superpack 作為冷存盤壓縮器,以壓縮很少使用的日志資料和檔案;以及致力于完善 Android 生態系統兼容性,也許某一天Facebook會考慮開源 Superpack 專案 ,
參考鏈接:https://engineering.fb.com/2021/09/13/core-data/superpack/
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/300794.html
標籤:其他
上一篇:Java 17到底有多快?
下一篇:2021隴劍杯部分WP
