Zstandard1.4.0 釋出,高階 API 穩定性增強
zstd 1.4.0 釋出了,zstd 又叫 Zstandard,它是一種快速無失真壓縮演算法,主要應用於 zlib 級別的實時壓縮場景,並且具有更好的壓縮比。zstd 還可以以壓縮速度為代價提供更強的壓縮比,速度與壓縮權衡可通過小增量進行配置。
高階 API
此版本主要關注於高階 API 的穩定性,高階 API 提供了一種在相容 API 和 ABI 的情況下,在壓縮和解壓期間設定特定引數的方法。例如,它允許使用多個執行緒進行壓縮,啟用 --longmode,設定幀引數和載入字典。它與 ZSTD_compressStream *() 和 ZSTD_compress2() 相容。還有一個高階解壓 API,允許設定最大記憶體使用和載入字典等引數。它與現有的解壓功能 ZSTD_decompressStream() 和 ZSTD_decompressDCtx() 相容。
舊的流函式都與新 API 相容,文件提供了新 API 中的等效函式呼叫。穩定的函式將繼續受到支援,但類似 ZSTD_initCStream_usingDict() 這樣處於實驗階段的函式最終將被標記為已棄用並刪除,以支援新的高階 API。
具體使用方法檢視案例:
效能
zstd 最快的壓縮級別變得更快了,測試顯示,在 zstd 最快的策略 level 1 的大多數情況下壓縮速度都快了 6-8%。例如,對於 level 1 的 Silesia Corpus,壓縮比 zstd-1.3.8 好 0.2%,Intel i9-9900K 上的效能資料如下:
Version | C. Speed | D. Speed |
---|---|---|
1.3.8 gcc-8 | 489 MB/s | 1343 MB/s |
1.4.0 gcc-8 | 532 MB/s (+8%) | 1346 MB/s |
1.3.8 clang-8 | 488 MB/s | 1188 MB/s |
1.4.0 clang-8 | 528 MB/s (+8%) | 1216 MB/s |
新特性
此版本新增了一個實驗性的函式 ZSTD_decompressBound()。
詳情檢視更新說明: