gzipファイル形式のファイルの圧縮時間をできるだけ短くしたい場合「pigz」を使用すると良いかもしれません。マルチプロセッサ・マルチコアを使った並列プログラミングを活用し、圧縮にかかる時間を劇的に短くすることができるモダンなgzipの実装です。
プログラムはデータ圧縮の分野で知られるMark Adler氏によるもの。zlibとpthreadライブラリを使って実装されています。
目次
インストール
pigzはzlib version 1.2.3移行が存在するUNIX系オペレーティングシステムで"make"コマンドを使ってビルドすることができます。
Macの場合Homebrew環境ならば以下のコマンドでインストール可能です。
brew install pigz
実行比較
Linuxカーネル「linux-4.7.tar.gz」を解凍・圧縮する速度を比較してみました。
最初にApple gzipで解凍・圧縮し、次にpigzで解凍・圧縮した時間を比較しています。
+ ORIGINAL_FILE=/Users/sora/Downloads/linux-4.7.tar.gz + cp /Users/sora/Downloads/linux-4.7.tar.gz . + gzip --version Apple gzip 251 + gzip -d linux-4.7.tar.gz real 0m2.617s user 0m1.978s sys 0m0.411s + gzip linux-4.7.tar real 0m22.528s user 0m21.589s sys 0m0.585s + cp /Users/sora/Downloads/linux-4.7.tar.gz . + pigz --version pigz 2.3.3 + pigz -d linux-4.7.tar.gz real 0m2.170s user 0m2.117s sys 0m0.828s + pigz linux-4.7.tar real 0m4.541s user 0m31.771s sys 0m0.585s
解凍時の時間はそれほど変わりませんが、圧縮時の時間がgzipの場合22.5秒かかっていたのに対し、pigzは4.5秒と1/4の時間で住んでいることが分かります。pigzの場合、userが31.771sとrealよりも大きくなっていることからも並列処理の効果を確認することができます(並列処理がおこなわれるとCPU毎のuser時間が積算されるのです)。
まとめ
圧縮処理が高速化されるgzip実装pigzを紹介しました。
複数のコアを同時に使用することで劇的に圧縮にかかる時間を短くすることができますが、その分処理中のCPU負荷は通常のgzipよりも上昇します。CPU負荷を気にしないと行けないレンタルサーバーやVPS等で使用する場合は気にとめておいた方が良いかもしれません。
タイトル | pigz | |
---|---|---|
公式サイト | http://zlib.net/pigz/ | |
ソフトアンテナ | https://softantenna.com/softwares/7456-pigz | |
説明 | マルチプロセッサ・マルチコア対応の並列gzip実装。 |