Zstandard:一種新的無損壓縮算法

jopen 9年前發布 | 16K 次閱讀 Zstandard

Zstandard(縮寫為Zstd)是一種新的無損壓縮算法,旨在提供快速壓縮,并實現高壓縮比。它既不像LZMAZPAQ那樣追求盡可能高的壓縮比,也不像LZ4那樣追求極致的壓縮速度。

下面是一組基準測試數據:

壓縮算法名稱

壓縮比

壓縮速度(MB/s)

解壓速度(MB/s)

zlib 1.2.8 -6

3.099

18

275

Zstd

2.872

201

498

zlib 1.2.8 -1

2.73

58

250

LZ4 HC r127

2.72

26

1720

QuickLZ 1.5.1b6

2.237

323

373

LZO 2.06

2.106

351

510

Snappy 1.1.0

2.091

238

964

LZ4 r127

2.084

370

1590

LZF 3.6

2.077

220

502

(環境:Core i5-4300U @ 1.9GHZ;基準測試程序:開源程序fsbench 0.14.3

從上表可以看出,Zstd的壓縮比和壓縮速度都比較高,而且解壓速度大約為每核500MB/s。

Zstd的壓縮速度可以根據不同的情況進行配置。在上述測試中,它提供了大約每核200MB/s的速度,可以用于一些實時壓縮場景。同時,與LZ4類似,它可以提供平衡壓縮比和壓縮時間的衍生算法,并且不影響解壓性能。

Zstd還有一個特點是內存需求可配置。這使它可以適應內存配置低或者服務器并行處理多個請求的情況。此外,它采用了“有限狀態熵(Finite State Entropy,縮寫為FSE)”編碼器。該編碼器是由Jarek Duda基于ANS理論開發的一種新型熵編碼器,旨在與“霍夫曼編碼器(Huffman encoder)”和“算數編碼器(Arithmetic encoder)”相競爭。

另據Cyan4973項目創建者Yann Collet介紹,雖然Zstd是一個速度很快的壓縮/解壓算法,但它并沒有進入LZ4的適用范圍。在一項基準測試中(測試方法見這里),Collet得出了這樣的結論:

當傳輸速度高于50MB/s時,LZ4是更好的選擇;而當傳輸速度介于0.5MB/s和50MB/s時,Zstd在速度上領先于其它算法。

此外,在回復用戶評論時,Collect比較了Zstd與lzham

根據我的理解,它們的設計出發點不同。Lzham來源于LZMA……以離線壓縮場景作為衡量標準……而Zstd的基本原則更像Zlib,但主要有三點變化:

  • FSE代替霍夫曼編碼器;
  • 不限匹配尺寸;
  • 偏移量可重復。

最后,請讀者朋友們注意:Zstd開發尚處于起步階段,本文的一些測試結果也只是早期的測試結果,其實現將會隨著時間的推移繼續改進和提高,尤其是在項目創建的第一年里。


來自:http://www.infoq.com/cn/news/2015/01/zstandard-compression-algorithm

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!