#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よりやや遅い程度でバンザイというところでしょうか。

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS