下面是一組基準測試數據: php
壓縮算法名稱 html |
壓縮比 git |
壓縮速度(MB/s) github |
解壓速度(MB/s) 算法 |
zlib 1.2.8 -6 服務器 |
3.099 app |
18 性能 |
275 測試 |
Zstd ui |
2.872 |
201 |
498 |
2.73 |
58 |
250 |
|
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 |
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開發尚處於起步階段,本文的一些測試結果也只是早期的測試結果,其實現將會隨着時間的推移繼續改進和提升,尤爲是在項目建立的第一年裏。