主要介紹 zstd 工具的做用和性能測試html
咱們稱 Zstandard 或 Zstd 是一種快速的無損壓縮算法,是針對 zlib 級別的實時壓縮方案,以及更好的壓縮比。它由一個很是快的熵階段,由 Huff0 和 FSE 庫提供。這個項目是做爲開源的 BSD 許可收費的庫,以及一個生成和解碼 .zst 格式。git
Zstd 還能夠壓縮速度爲代價提供更強的壓縮比,Speed vs Rtrade 能夠經過小增量進行配置。在全部設置中,解壓速度保持不變,並在全部 LZ壓縮算法( 好比 zlib 或者lzma) 共享的屬性中保持不變。github
之前的壓縮方式,都是適用於典型文件和二進制的壓縮方案( MB/GB)的狀況。然而,要壓縮的數據量越小,壓縮就越困難。這是全部壓縮算法都存在的問題,緣由是壓縮算法從過去的數據中學習如何壓縮將來的數據。可是在一個新的數據集的開始,沒有「過去」能夠參考。算法
爲了解決這種狀況,Zstd 提供了一種新的訓練模式,可使用這種模式對所選數據類型的算法進行調優。訓練 Zstandard 是經過提供一些樣本(每一個樣本一個文件)來實現的,訓練的結果存儲在稱爲「字典」的文件中,該文件必須在壓縮和解壓縮以前加載。使用此字典,能夠在小數據上實現的壓縮率大大提升。併發
如下示例,使用由 github 公共 API 建立的 github 用戶示例集。它由大約 10K 條記錄組成,每條記錄 1KB 左右。app
若是在一組小的數據樣本中存在某種相關性,那麼訓練就是有效的。一個字典的數據越具體,它的效率就越高(沒有通用字典)。所以,爲每種類型的數據部署一個字典將帶來最大的好處。字典增益在前幾個 KB 中最有效。而後,壓縮算法將逐步使用先前解碼的內容,以更好地壓縮文件的其他部分。工具
# 訓練字典 $ zstd --train FullPathToTrainingSet/* -o dictionaryName # 用字典壓縮 $ zstd -D dictionaryName FILE # 用字典解壓縮 $ zstd -D dictionaryName --decompress FILE.zst
主要介紹 zstd 工具的安裝和所有的參數命令post
# Ubuntu $ apt install zstd # CentOS $ yum install zstd # 編譯安裝 $ git clone https://github.com/facebook/zstd.git $ cd zstd; make; sudo make install
參數性能
$ zstd --help 使用方式 : zstd [args] [FILE(s)] [-o file]
參數選項 : -# : 壓縮級別(1-19,默認值爲3) -d : 解壓 -D file: 使用文件做爲字典 -o file: 結果存儲在文件中 -f : 在沒有提示的狀況下覆蓋輸出並(解壓)壓縮連接 --rm : 成功解壓縮後刪除源文件 -k : 保存源文件(默認) -h/-H : 顯示幫助/長幫助並退出
高級選項 : -V : 顯示版本號並退出 -v : 詳細模式 -q : 靜默輸出 -c : 強制寫入標準輸出 -l : 輸出zstd壓縮包中的信息 --ultra : 啓用超過19級,最多22級(須要更多內存) -T# : 使用幾個線程進行壓縮(默認值:1個) -r : 遞歸地操做目錄 --format=gzip : 將文件壓縮爲.gz格式 -M# : 爲解壓設置內存使用限制
字典生成器 :學習
--train ## : 從一組訓練文件中建立一個字典 --train-cover[=k=#,d=#,steps=#] : 使用帶有可選參數的cover算法 --train-legacy[=s=#] : 有選擇性地使用遺留算法(默認值:9) -o file : 「file」是字典名(默認:字典) --maxdict=# : 將字典限制爲指定大小(默認值:112640) --dictID=# : 強制字典ID爲指定值(默認:隨機)
性能測試參數 :
-b# : 基準測試文件,使用#壓縮級別(默認爲1) -e# : 測試從-bX到#的全部壓縮級別(默認值:1) -i# : 最小計算時間(秒)(默認爲3s) -B# : 將文件切成大小爲#個獨立塊(默認:無塊) --priority=rt : 將進程優先級設置爲實時
主要介紹一些關於 zstd 工具的使用示例和參數解釋
# 將一個文件壓縮成一個後綴爲.zst的新文件 # 若是命令後面沒有文件或文件爲-的話,則讀取標準輸入 $ zstd file # 在壓縮操做後刪除源文件 # 默認狀況下,源文件在成功壓縮或解壓縮後不會被刪除 $ zstd --rm file # 解壓zst壓縮包 $ zstd -d file.zst # 解壓zst壓縮包到標準輸出 $ zstd -dc file.zst # 查看zst壓縮包 $ zstd -l file.zst $ zstdcat file.zst
# 輸出詳細信息 $ zstd -v file $ zstd -v -d file.zst # 壓縮一個文件同時指定壓縮級別(19最高,0最低,3爲默認) $ zstd -level file $ zstd -9 file # 使用更多的內存(壓縮和解壓時)以達到更高的壓縮比 $ zstd --ultra -level file # 解壓縮爲單進程 # 多個進程併發執行壓縮過程(0表示自動使用全部CPU核心) $ zstd -T0 file $ zstd -T4 file $ zstd -T4 -d file.zst
做者: Escape 連接: https://www.escapelife.site/p...
版權聲明: 本博客全部文章除特別聲明外,均採用 CC BY 4.0 許可協議。