#author("2024-06-06T09:39:32+00:00","","") #author("2024-06-06T10:04:16+00:00","","") *Archive / CatTest : ねこテスト [#z2fa2d54] **なにこれ [#o6b65d03] -[[青空文庫/吾輩は猫である:https://www.aozora.gr.jp/cards/000148/card789.html]] (文字コードSJIS) を適当に圧縮したり展開したりするテスト。 --zip書庫をげっとして展開したり圧縮したりして比較するコーナー $ mkdir ~/test; cd ~/test $ curl -o wagahai.zip https://www.aozora.gr.jp/cards/000148/files/789_ruby_5639.zip $ unzip wagahai.zip $ ls -aF ./ ../ wagahai.zip wagahaiwa_nekodearu.txt (ls -l で、zipは344964バイト、txtは749051バイト。下記ワンライナーで46%程度に縮んでいるzipとわかります) $ python -c "print("344964/749051")" 0.46053472994495703 **お手軽に圧縮したらどうなるか。 [#ue074407] ***tar系 [#z2a0c026] -gz/bz2/xz/zstd (tarで一括) $ tar zcvf wagahai.tar.gz *.txt $ tar jcvf wagahai.tar.bz2 *.txt $ tar Jcvf wagahai.tar.xz *.txt $ tar -acvf wagahai.tar.zst *.txt -gz/bz2/xz/lzma/zstd (tarと別々 1) $ tar cvf wagahait.tar *.txt; gzip wagahait.tar $ tar cvf wagahait.tar *.txt; bzip2 wagahait.tar $ tar cvf wagahait.tar *.txt; xz wagahait.tar $ tar cvf wagahait.tar *.txt; lzma wagahait.tar $ tar cvf wagahait.tar *.txt; zstd wagahait.tar -gz/bz2/xz/lzma//zstd (tarと別々 2, 圧縮率重視) $ tar cvf wagahaip.tar *.txt; gzip -9 wagahaip.tar $ tar cvf wagahaip.tar *.txt; bzip2 -9 wagahaip.tar $ tar cvf wagahaip.tar *.txt; xz -9 wagahaip.tar $ tar cvf wagahaip.tar *.txt; lzma -9 wagahaip.tar $ tar cvf wagahaip.tar *.txt; zstd --ultra -22 wagahaip.tar ***zip, 7z [#e98e16a0] $ zip -9 wagahai9.zip wagahaiwa_nekodearu.txt $ 7z a -mx9 wagahai9.7z wagahaiwa_nekodearu.txt ***lzh等 [#af5e9dad] (残念ながら Liunx で新規にlzhファイルは作れないので、「ふ様 (Windowsの某圧縮専用ソフト)」でlh5で圧縮し、scpで転送します。yz1/cab(LZX/21)もおまけで。 ***お手軽な結果 [#s77a617a] ファイルサイズ順で並び替えると、 lzh (lh5) > 標準zip > tar.gz系全般 > zip(Lv9) > yz1 > zst全般 > cab(LZX/21) > 7z (Lv9) > xz全般 = lzma? > bz2全般 という結果になりました。あるぇbzip2すごくね? (ls -l で、bz2は252108バイト、zstは281618バイト、txtは749051バイト。下記ワンライナーでどんだけの圧縮率かがわかります) $ python -c "print(252108/749051)" 0.3365698730794031 $ python -c "print(281618/749051)" 0.3759663894714779 つまりわかることは、だいたい33%~50%くらいに圧縮できるってことになりますかね。 **時間計測 [#w0c11bb0] bashの組み込みコマンド time を用いると、時間計測ができる。つまり... $ time tar cvf wagahaip.tar *.txt; gzip -9 wagahaip.tar 0.013 total $ time tar cvf wagahaip.tar *.txt; bzip2 -9 wagahaip.tar 0.013 total $ time tar cvf wagahaip.tar *.txt; xz -9 wagahaip.tar 0.011 total $ time tar cvf wagahaip.tar *.txt; lzma -9 wagahaip.tar 0.013 total $ time tar cvf wagahaip.tar *.txt; zstd --ultra -22 wagahaip.tar 0.016 total $ tar cvf wagahaip.tar *.txt; time gzip -9 wagahaip.tar 0.111 total $ tar cvf wagahaip.tar *.txt; time bzip2 -9 wagahaip.tar 0.084 total $ tar cvf wagahaip.tar *.txt; time xz -9 wagahaip.tar 0.497 total $ tar cvf wagahaip.tar *.txt; time lzma -9 wagahaip.tar 0.519 total $ tar cvf wagahaip.tar *.txt; time zstd --ultra -22 wagahaip.tar 0.319 total $ time tar xvf wagahaip.tar.gz 0.023 total $ time tar xvf wagahaip.tar.bz2 0.107 total $ time tar xvf wagahaip.tar.xz 0.043 total $ time tar xvf wagahaip.tar.lzma 0.033 total $ time tar xvf wagahaip.tar.zst 0.028 total ここからわかることは zst がそこそこバランスとれる圧縮率なのに速度ではgzipよりやや遅い程度でバンザイというところでしょうか。