ソース http://sinonome-iria.hp.infoseek.co.jp/pc/compress.htm 調査方法に無駄がなくわかりやすいサイト

圧縮についての調査

テキストファイル ( 8, 463, 874 バイト ) を圧縮
形式 バイト 圧縮率 メーター ランク
bzip 1, 983, 585 76.6
1
cab 2, 055, 457 75.7
2
gzip 2, 466, 797 70.9
3
lha 2, 870, 894 66.1
5
zip 2, 780, 496 67.1
4

実行ファイル ( 7, 387, 756 バイト ) を圧縮
形式 バイト 圧縮率 メーター ランク
bzip 2, 805, 906 62.0
2
cab 2, 355, 208 68.1
1
gzip 2, 943, 462 60.2
3
lha 2, 994, 802 59.5
5
zip 2, 950, 675 60.1
4

イメージファイル ( 8, 391, 414 バイト ) を圧縮その 1
形式 バイト 圧縮率 メーター ランク
bzip 3, 619, 697 56.9
2 ( 3 )
cab 3, 592, 467 57.2
1 ( 2 )
gzip 3, 921, 337 53.3
3 ( 4 )
lha 3, 953, 183 52.9
5 ( 7 )
zip 3, 923, 184 53.2
4 ( 5 )
jpeg 1, 054, 171 87.4
( 1 )
png 3, 932, 782 53.1
( 6 )

イメージファイル ( 33, 210, 264 バイト ) を圧縮その 2
形式 バイト 圧縮率 メーター ランク
bzip 14, 859, 363 55.3
1
cab 16, 906, 040 49.1
2
gzip 18, 638, 398 43.9
3
lha 19, 187, 111 42.2
5
zip 18, 642, 744 43.9
4

サウンドファイル ( 36, 088, 512 バイト ) を圧縮
形式 バイト 圧縮率 メーター ランク
bzip 29, 803, 718 17.4
1 ( 2 )
cab 31, 553, 341 12.6
2 ( 3 )
gzip 31, 846, 432 11.8
4 ( 5 )
lha 31, 877, 172 11.7
5 ( 6 )
zip 31, 824, 071 11.8
3 ( 4 )
mp3 3, 256, 188 91.0
( 1 )

注意事項

  • 圧縮率とは、{ 1 - ( 圧縮後のサイズ/元のサイズ ) } * 100 とした。
  • bzip と gzip は、tar と共に用いた。
  • lha は lh5 、bzip と gzip と zip の圧縮係数は 9、cab は lzx 形式で 21 とした。
  • テキストファイルとは、*.txt 、*.htm とした。
  • 実行ファイルとは、*.exe ファイルとした。
  • イメージファイルその 1 は 640 x 480 、256 色、その 2 は 640 x 480 、1677 万色の bmp とした。
  • サウンドファイルは、44.1 KHz 、16 bit 、ステレオの PCM とした ( CD と同じ品質 )。

これから見ると、bzip と cab が頭一つ抜け出している。ついで、gzip、zip、lha の順となる。 lha は lh7 とすることで、微妙に圧縮率が向上するが、ほとんど誤差と言っていいほどである。
圧縮速度は、当然 gzip 、zip 、lha が早く、bzip と cab は遅いが、cab は圧縮率を落とすと早くなる。 time があればなぁ。

テキストファイルの圧縮率は非常に高く、平均 70% 程度。 バイナリファイルである実行ファイルもかなり高く、60% 程度。 イメージファイルも平均 50% 程度の圧縮率となっている。 これらに対し、サウンドファイルは軒並み 20% 以下で、かなり圧縮率が悪い。

8 bit bmp を jpge に変換 ( 品質係数 100 ) した場合、87.4% という驚異的な圧縮率となった。 png にすると、53.1% と、普通の圧縮と似たような圧縮率。
ただし、jpeg にすると、損失ができるし、8 bit の画像でも 24 bit となるので注意。png は損失なし ( のはず ) 。 小さく、かつ、綺麗にしようとすると、フラクタル圧縮がよいらしい ( jpeg は離散コサイン変換圧縮 ) 。

128 k ビットの mp3 にすると、3, 256, 188 バイトとなって、 91.0% という、これも驚異的な圧縮率となった。
ただ、mp3 にすると、損失ができるので注意。

サイズの小さい大量のファイル ( 数千個 ) は、 単に一つのファイルにアーカイブするだけで、ディスクの空き容量を簡単に増やせる。 クラスタサイズが 4 KB の場合、1 ファイルあたり、平均 2 KB の無駄ができるので、 2 KB * 2000 個 = 4000 KB = 約 4 MB という理屈に。 inf ファイルで実行してみると、分かりやすい。
圧縮とは直接関係ないが、ディスクスペースの節約という点では同じ。 1 メールを 1 ファイルで管理するメールアプリケーションなどで使うとよいかも。

圧縮法による特徴の考察。

  • bzip

    cab と並び、高圧縮。ただし、圧縮展開が遅いのが難点。bzip 単体では、一つのファイルしか圧縮できないので、 まず tar で一つのファイルにして、それを bzip で圧縮することになる。
    tar で一まとめにした後、圧縮するので、サイズが異常に小さいファイルでもそれなりの圧縮率となる。
    自己解凍書庫も作れるらしいが… ?

  • cab

    bzip と並び、高圧縮。ただし、圧縮率を上げるほど速度が遅くなるので注意。展開は速そう。 Windows 98 以降では、OS 自体に展開機能がついているので楽 ( ただし、ディレクトリ構造は復元できない )。 自己解凍書庫も作れる。

  • gzip

    圧縮率は bzip や cab より劣るが、その分速度は速い。bzip と同じく、tar 後に圧縮するので、 小さなサイズのファイルを大量に圧縮するのに向く。
    UNIX 系では、標準的圧縮方法。自己解凍書庫も作れるらしいが… ?

  • lha

    gzip と同じく、圧縮率は bzip や cab より劣るが、その分速度は速い。 非常にサイズが小さいファイル ( 60 バイト程度 ) は圧縮できないらしい ( lh0 で格納される )。
    日本国内の Windows 系では、ほぼ標準となっているので、配布目的なら、lha を選択すべき。 自己解凍書庫も作れる。

  • zip

    gzip と同じく、圧縮率は bzip や cab より劣るが、その分速度は速い。 Windows 98 の Plus! や、Windows ME では、OS に圧縮展開機能がついているので楽。
    海外では、lha よりはるかに標準的圧縮法。グローバル展開 ( 笑 ) するつもりなら、zip でどうぞ。 自己解凍書庫も作れる。

  • 番外編 tar

    単に複数のファイルを一つのファイルにまとめるもの。圧縮はしないので、絶対にサイズが増えてしまうが、 使用クラスタの関係で、小さなサイズのファイルを大量にまとめる場合は有効。 当然、bzip や gzip を併用した場合より展開が速い。

ファイルによる圧縮法の選択

  • テキストファイル

    圧縮率を考えれば cab がよい。Win 98 以降なら、OS に展開機能がついているのも選択理由の一つ。
    速さを重視するなら、zip か低圧縮率の cab がよい。zip の場合、Win ME なら OS に圧縮展開機能がついている。 cab は Win 98 以降。
    サイズの小さい大量のファイルの場合は、tar + gzip がよさそう。 tar のみ、という手もよいが、それなら速さ的に lha でも zip でも、大して変わらないだろう。

  • イメージファイル

    損失があってもよいなら、jpeg を選択すべき。
    損失があると困る場合は、png がよい。わざわざ bzip などで圧縮すると、展開に時間がかかるし、 png と圧縮率も大して変わらない。 ただ、この場合は png を表示するアプリケーションがあることが前提。 たとえば、Internet Explorer 4.0 以降や Netscape 4.0 以降のブラウザなら OK 。

  • サウンドファイル

    損失があってもよいなら、mp3 を選択。
    損失があると困る場合は、圧縮しないほうがよい。たかだか 10 % 程度のために、展開時間を作るのは無駄である。
    ちなみに、サンプリング周波数を半分にする、ビット数を半分にする、ステレオをモノラルにする、 と、それぞれサイズが半分になる。すべて行うと、1/8 になる。一般人は、ビット数と周波数を半分にしても、 ほとんど判らないという。さすがに、ステレオをモノラルにすると、簡単にわかるが…。

  • その他のバイナリファイル

    テキストファイルと同じ。

  • 番外

    Windows NT 4.0 や Windows 2000 では、OS 自体に圧縮機能が付いていて、 しかも、見かけ上は普通のファイルと同じなので、使いやすい。 ヘルプファイルなどは圧縮しても、なんら問題ないはず。

最後に、これらのデータは、環境やファイルによって左右されることが多いので、 すべてを鵜呑みにしない方がよい。
最適化、コンパイラ、プラットフォームによっていろいろ変わるので…。
ちなみに、Win 32 ( Windows ME 4.90.3000 ) での調査。


最終更新:2006年04月02日 21:26