圧縮でファイルはどれだけ小さくなるか 素材別にZIP・gzip・bzip2・xzを実測しました

IT・仕事術

記事内に広告が含まれています。

この記事でわかることをまとめました

  • テキスト、WAV音声、写真・動画の3つの素材を、ZIP、gzip、bzip2、xzの4方式で圧縮したときの、大きさと圧縮時間の実測値がわかります。
  • テキストはbzip2で元の16.8%まで小さくなり、写真・動画はどの方式でも97.8〜98.3%までしか小さくならなかったことがわかります。
  • 今回の比較が成り立つ範囲と、私が確認していないことがわかります。

テキストはbzip2で16.8%まで縮み、写真・動画はほぼ縮みませんでした

私は3種類の素材を、ZIP、gzip、bzip2、xzで圧縮して比べました。一番よく縮んだのはテキストで、bzip2で142,129バイト、元の16.8%になりました。

一方で、写真・動画は、どの方式でも97.8〜98.3%までしか縮みませんでした。今回の素材と各ツールの既定設定では、素材の種類によって縮み方が大きく変わりました。

素材は3グループで、原本は変えずにコピーを圧縮しました

素材は次の3グループです。いずれも原本は変更せず、コピーを作って圧縮しました。

  • テキストは、このブログの原稿HTML 46件で、合計845,921バイトです。
  • WAV音声は、私が自作したBGM 3曲のWAVで、合計19,815,830バイトです。
  • 写真・動画は、JPEG写真3枚とMP4動画1本で、合計2,522,206バイトです。JPEGとMP4は、どちらも中身がすでに圧縮されている形式です。

圧縮は、CPU 2コアのVMで、各ツールの既定設定のまま実施しました。ZIPはzipコマンドでフォルダごと圧縮しました。gzip、bzip2、xzはtarでフォルダを1つにまとめてから圧縮しました。

各条件を3回圧縮し、圧縮時間は中央値で比べました。ファイルサイズは、残した出力ファイルの実測で、3回とも同じバイト数でした。

テキストではbzip2とxzが元の17%前後まで小さくなりました

図1に、素材ごとの圧縮後の割合をまとめました。テキストはbzip2が16.8%、xzが17.4%、gzipが22.4%、ZIPが31.3%でした。

方式(テキスト)圧縮後(バイト)元に対する割合圧縮時間の中央値
元のHTML 46件845,921100.0%—
ZIP264,46231.3%0.047秒
gzip189,18822.4%0.069秒
bzip2142,12916.8%0.106秒
xz147,11617.4%0.364秒

ZIPだけが31.3%と大きく残りました。ZIPはファイルごとに圧縮する方式で、tar+圧縮はフォルダ全体を1つの流れとして圧縮する方式です。この違いが、似た内容のファイルが多いテキストで差になったと考えられます。

ただし、私はファイル単体での比較をしていません。そのため、原因の切り分けはできていません。

WAV音声ではxzが72.8%で最小でしたが、時間は約9.0倍かかりました

WAV音声では、xzが14,423,396バイトで、元の72.8%と一番小さくなりました。ただし、圧縮時間の中央値は12.326秒で、ZIPの1.364秒の約9.0倍でした。

ZIPとgzipは、どちらも85.5%でほぼ同じ大きさでした。差は150バイトです。bzip2は78.6%でした。

方式(WAV音声)圧縮後(バイト)元に対する割合圧縮時間の中央値
元のWAV 3曲19,815,830100.0%—
ZIP16,945,23385.5%1.364秒
gzip16,945,38385.5%1.339秒
bzip215,573,26478.6%2.652秒
xz14,423,39672.8%12.326秒

図2に、WAV3曲の圧縮時間の中央値をまとめました。xzが12.326秒で一番長く、gzipが1.339秒で一番短い結果でした。

写真・動画はどの方式でも97.8〜98.3%までしか縮みませんでした

JPEG 3枚とMP4 1本は、ZIPとgzipが97.8%、xzが98.2%、bzip2が98.3%でした。JPEGとMP4は中身がすでに圧縮されているため、さらに圧縮してもほとんど小さくならなかったようです。

bzip2とxzは、ZIPやgzipよりわずかに大きくなりました。今回の素材では、圧縮する意味がほぼありませんでした。

方式(写真・動画)圧縮後(バイト)元に対する割合圧縮時間の中央値
元のJPEG 3枚とMP4 1本2,522,206100.0%—
ZIP2,467,53097.8%0.145秒
gzip2,467,22597.8%0.135秒
bzip22,478,52398.3%0.392秒
xz2,477,98898.2%0.885秒

展開チェックは12条件すべてで元と一致しました

私は各アーカイブを展開し、ファイル数と合計バイト数が元の素材と一致するかを確かめました。12条件すべてで一致しました。

この結果を読むときの注意点があります

  • 今回の数値は、各ツールの既定設定での結果です。圧縮レベルを上げ下げすれば、大きさと時間は変わります。
  • テキストの素材は、このブログのHTML原稿46件です。文字の種類やファイル数が違うテキストでは、割合が変わる場合があります。
  • 圧縮時間はCPU 2コアのVMでの計測です。お使いの環境では時間が変わります。
  • テキストと写真・動画は1秒未満の計測で、回ごとのばらつきの影響を受けやすい範囲です。

関連する計測記事もあわせて読んでみてください

このブログで実測した記事として、画像の形式別サイズを調べた画像形式の実測記事、動画の書き出し時間を計測した動画の書き出し時間の実測記事、音声形式のサイズを調べたBGMの音声形式の実測記事、動画コーデック別のサイズを調べた動画コーデックの実測記事を紹介しています。

コメント