<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          壓縮神器 zstd,速度快,性能好!

          共 4683字,需瀏覽 10分鐘

           ·

          2021-03-14 11:51

          點擊上方藍色“小哈學Java”,選擇“設為星標

          回復“資源”獲取獨家整理的學習資料!

          1. 工具介紹

          主要介紹 zstd 工具的作用和性能測試

          我們稱 Zstandard 或 Zstd 是一種快速的無損壓縮算法,是針對 zlib 級別的實時壓縮方案,以及更好的壓縮比。它由一個非??斓撵仉A段,由 Huff0 和 FSE 庫提供。這個項目是作為開源的 BSD 許可收費的庫,以及一個生成和解碼 .zst 格式。

          • 性能測試對比
          Compressor nameRatioCompressionDecompress.
          zstd 1.4.4 -12.884520 MB/s1600 MB/s
          zlib 1.2.11 -12.743110 MB/s440 MB/s
          brotli 1.0.7 -02.701430 MB/s470 MB/s
          quicklz 1.5.0 -12.238600 MB/s800 MB/s
          lzo1x 2.09 -12.106680 MB/s950 MB/s
          lz4 1.8.32.101800 MB/s4220 MB/s
          snappy 1.1.42.073580 MB/s2020 MB/s
          lzf 3.6 -12.077440 MB/s930 MB/s

          Zstd 還可以壓縮速度為代價提供更強的壓縮比,Speed vs Rtrade 可以通過小增量進行配置。在所有設置中,解壓速度保持不變,并在所有 LZ壓縮算法( 比如 zlib 或者lzma) 共享的屬性中保持不變。

          以前的壓縮方式,都是適用于典型文件和二進制的壓縮方案( MB/GB)的情況。然而,要壓縮的數(shù)據(jù)量越小,壓縮就越困難。這是所有壓縮算法都存在的問題,原因是壓縮算法從過去的數(shù)據(jù)中學習如何壓縮未來的數(shù)據(jù)。但是在一個新的數(shù)據(jù)集的開始,沒有“過去”可以參考。

          為了解決這種情況,Zstd 提供了一種新的訓練模式,可以使用這種模式對所選數(shù)據(jù)類型的算法進行調優(yōu)。訓練 Zstandard 是通過提供一些樣本(每個樣本一個文件)來實現(xiàn)的,訓練的結果存儲在稱為**“字典”**的文件中,該文件必須在壓縮和解壓縮之前加載。使用此字典,可以在小數(shù)據(jù)上實現(xiàn)的壓縮率大大提高。

          以下示例,使用由 github 公共 API 創(chuàng)建的 github 用戶示例集。它由大約 10K 條記錄組成,每條記錄 1KB 左右。

          • 小數(shù)據(jù)壓縮的案例

          如果在一組小的數(shù)據(jù)樣本中存在某種相關性,那么訓練就是有效的。一個字典的數(shù)據(jù)越具體,它的效率就越高(沒有通用字典)。因此,為每種類型的數(shù)據(jù)部署一個字典將帶來最大的好處。字典增益在前幾個 KB 中最有效。然后,壓縮算法將逐步使用先前解碼的內容,以更好地壓縮文件的其余部分。

          • 字典壓縮使用示例

          bash

          # 訓練字典
          $ zstd --train FullPathToTrainingSet/* -o dictionaryName

          # 用字典壓縮
          $ zstd -D dictionaryName FILE

          # 用字典解壓縮
          $ zstd -D dictionaryName --decompress FILE.zst
          • 提供客戶端工具

          2. 參數(shù)命令

          主要介紹 zstd 工具的安裝和全部的參數(shù)命令

          • 安裝方式

          bash

          # Ubuntu
          $ apt install zstd

          # CentOS
          $ yum install zstd

          # 編譯安裝
          $ git clone https://github.com/facebook/zstd.git
          cd zstd; make; sudo make install
          • 參數(shù)命令

          bash

          $ zstd --help
          使用方式 :
                zstd [args] [FILE(s)] [-o file]

          參數(shù)選項 :
           -#     : 壓縮級別(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 ## : 從一組訓練文件中創(chuàng)建一個字典
          --train-cover[=k=#,d=#,steps=#] : 使用帶有可選參數(shù)的cover算法
          --train-legacy[=s=#] : 有選擇性地使用遺留算法(默認值:9)
           -o file : “file”是字典名(默認:字典)
          --maxdict=# : 將字典限制為指定大小(默認值:112640)
          --dictID=# : 強制字典ID為指定值(默認:隨機)

          性能測試參數(shù) :
           -b#    : 基準測試文件,使用#壓縮級別(默認為1)
           -e#    : 測試從-bX到#的所有壓縮級別(默認值:1)
           -i#    : 最小計算時間(秒)(默認為3s)
           -B#    : 將文件切成大小為#個獨立塊(默認:無塊)
          --priority=rt : 將進程優(yōu)先級設置為實時

          3. 使用技巧

          主要介紹一些關于 zstd 工具的使用示例和參數(shù)解釋

          • 簡單使用

          bash

          # 將一個文件壓縮成一個后綴為.zst的新文件
          # 如果命令后面沒有文件或文件為-的話,則讀取標準輸入
          $ zstd file

          # 在壓縮操作后刪除源文件
          # 默認情況下,源文件在成功壓縮或解壓縮后不會被刪除
          $ zstd --rm file

          # 解壓zst壓縮包
          $ zstd -d file.zst

          # 解壓zst壓縮包到標準輸出
          $ zstd -dc file.zst

          # 查看zst壓縮包
          $ zstd -l file.zst
          $ zstdcat file.zst
          • 高級用法

          bash

          # 輸出詳細信息
          $ zstd -v file
          $ zstd -v -d file.zst

          # 壓縮一個文件同時指定壓縮級別(19最高,0最低,3為默認)
          $ zstd -level file
          $ zstd -9 file

          # 使用更多的內存(壓縮和解壓時)以達到更高的壓縮比
          $ zstd --ultra -level file

          # 解壓縮為單進程
          # 多個進程并發(fā)執(zhí)行壓縮過程(0表示自動使用所有CPU核心)
          $ zstd -T0 file
          $ zstd -T4 file
          $ zstd -T4 -d file.zst
          來源 | https://www.escapelife.site/posts/60eeaca8.html


          1. 超經(jīng)典的 25 道 MyBatis 面試題!

          2. Java 不香了么?小哈學起了 Go 語言 !

          3. Spring Boot 開發(fā)微信公眾號

          4. 面試官:公司項目中Java的多線程一般用在哪些場景?

          最近面試BAT,整理一份面試資料Java面試BATJ通關手冊,覆蓋了Java核心技術、JVM、Java并發(fā)、SSM、微服務、數(shù)據(jù)庫、數(shù)據(jù)結構等等。

          獲取方式:點“在看”,關注公眾號并回復 Java 領取,更多內容陸續(xù)奉上。

          文章有幫助的話,在看,轉發(fā)吧。

          謝謝支持喲 (*^__^*)

          瀏覽 69
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲色情精品视频 | 青娱乐操逼网站 | 在线吴梦梦视频一区二区 | 国产又粗又大视频 | 日韩精品在线免费观看 |