Zstandard(或Zstd)是由Facebook的Yann Collet開發的一個無失真數據壓縮演算法。該名稱也指其C語言的參考實作。第1版的實作於2016年8月31日釋出為自由軟件[2][3][4]
特色
設計Zstandard的目的是提供一個類似於DEFLATE演算法的壓縮比,但更快,特別是解壓縮快的演算法。它的壓縮等級從負5級(最快)到22級(壓縮速度最慢,但是壓縮比最高)可以調整。[5]
zstd套件裏面有壓縮和解壓縮的並列(多線程)實作。從1.3.2版本(2017年10月)開始,zstd 有選擇地進行非常長的搜尋和重複數據消除(--long
,128MiB窗口),類似於rzip或lrzip。[6]
壓縮速度在最快和最慢級別之間可以相差20倍或更多,而解壓縮速度統統很快,在最快和最慢級別之間相差不到20%。[7] Zstandard命令列有一個「自動調整」(--adapt
)模式,根據I/O條件改變壓縮等級,主要是寫入輸出的速度。
Zstd在其最大壓縮等級下的壓縮比接近lzma、lzham和ppmx,並且比lza或bzip2效能更好。[8][9] Zstandard達到了目前的柏拉圖最適性,因為它解壓縮的速度比任何其他目前可用的演算法都要快,並且有類似的或者更好的壓縮比。[10][11]
字典對小檔案的壓縮比有很大的影響,所以Zstandard可以使用用戶提供的壓縮字典。它還提供了一種訓練模式,能夠從一組樣本生成一個字典。[12][13] 特別是,可以載入一個字典來處理檔案之間具有冗餘的大型檔案集,但不一定在每個檔案(例如紀錄檔檔案)內。
使用情況
Linux內核自2017年11月以來就套件含了Zstandard (4.14版本) ,作為btrfs和squashfs檔案系統的壓縮方法。[15][16][17]
2017年,Allan Jude將Zstandard整合到FreeBSD內核中,[18] 用於概念驗證OpenZFS壓縮方法。[7] 隨後,它受整合為核心傾印(英語:Core dump,中國大陸作核心轉儲,台灣作核心傾印)(用戶程式和內核崩潰)的壓縮器選項。
AWS Redshift和RocksDB資料庫支援使用Zstandard進行欄位壓縮。[19]
2018年3月,Canonical在Ubuntu Linux發行版中測試了[20]預設使用zstd作為deb壓縮方法。與deb的xz壓縮相比,等級19的zstd解壓縮速度要快得多,但代價是套件檔案大小增加了6%。Debian開發者Ian Jackson希望再等幾年再官方採用zstd來封裝。[21][22][23]
2018年,該演算法釋出為 RFC 8478,它還定義了相關的媒體類型「application/zstd」、副檔名「zst」和HTTP內容編碼「zstd」。[24]
2019年10月,隨着pacman 5.2套件管理器的釋出,Arch Linux增加了對zstd套件壓縮方法的支援,[25] 2020年1月,官方儲存庫中的套件從xz轉換為zstd。Arch採用zstd -c -T0 --ultra -20 -
,與xz相比,所有壓縮檔的大小增加了0.8%,解壓速度提高了1300%;當使用多個線程時,解壓主記憶體增加了50 MiB,壓縮主記憶體會增加,但會隨着使用的線程數而擴充。[26][27][28][29]
在.NSZ / .XCZ檔案格式中完整實作了該演算法以及多種壓縮等級,[30] 由任天堂Switch混合遊戲機的自製社區開發。[31]
特許條款
參見
參考資料
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.