ファイル圧縮対決6番勝負!
著名なファイル圧縮形式のうち一番小さくなる圧縮形式はどれだ?
(98/11/16)
普段なにげなく使っているファイル圧縮ソフト。しかし世の中には数々の圧縮形式があることをご存じだろうか。世界で最も広く利用されているZIP、日本では最もメジャーなLZH、この2つは窓の杜の読者ならばほとんどの方がご存じだろうが、ほかにもCAB、ARJ、TGZ、最近ではRARやYZ1、BZ2というものも見かける。その違いは圧縮アルゴリズムにあるわけだが、それでは圧縮率にどこまで差があるのだろうか。そこでいくつかのファイルを用意して圧縮テストを行ってみた。
なお、すべての圧縮形式は最大の圧縮率となる圧縮時オプションを使用し、比較の参考として日本で10年以上昔から最もよく使われているlh5オプションでのLHA圧縮のデータ(LZH-5)も添えてある。圧縮技術について現在どれだけ進歩してきたのかという視点で見るのも一興だろう。
テストにはWindows 95 OSR2.0のインストールされたマシン(CPU: MMX Pentium 150MHz、RAM: 64MB)を用いたことを記しておく。また圧縮時間は試行1回について手元の時計で計測したもので、あくまで目安と考えていただきたい。
【対決1】プログラムファイル(バイナリ)の圧縮
圧縮素材:EXEファイル 元サイズ合計:12,253,056 Byte、ファイル数 3
| 形式 | 圧縮後サイズ (Bytes) | 圧縮率 (%) | 高 < 圧縮率 > 低 | 圧縮時間 (秒) |
1 | CAB | 4,455,812 | 36.4 | | 246 |
2 | RAR | 5,126,226 | 41.8 | | 1075 |
3 | BZ2 | 5,232,859 | 42.7 | | 100 |
4 | LZH | 5,446,212 | 44.4 | | 119 |
5 | ZIP | 5,508,486 | 45.0 | | 96 |
6 | TGZ | 5,524,848 | 45.1 | | 140 |
7 | ARJ | 5,539,387 | 45.2 | | 71 |
8 | SIT | 5,665,273 | 46.2 | | 69 |
9 | LZH-5 | 5,671,936 | 46.3 | | 64 |
10 | YZ1 | 5,672,349 | 46.3 | | 75 |
大きなサイズほど差が出ると思われたので、手持ちのプログラムのうち最も大きかった3ファイルをサンプルにした。結果はご覧の通り。ドングリの背比べの中、Windowsのインストールディスクでお馴染みのCAB形式が、大きく差をつけてトップ。なお、CAB圧縮にはMSZIP形式とLZX形式があるが、LZX形式(圧縮レベル21)のほうが小さくできる。
【対決2】データファイル(テキスト)の圧縮
圧縮素材:TXTファイル 元サイズ合計:6,481,375 Byte、ファイル数 3
| 形式 | 圧縮後サイズ (Bytes) | 圧縮率 (%) | 高 < 圧縮率 > 低 | 圧縮時間 (秒) |
1 | CAB | 2,595,395 | 40.0 | | 113 |
2 | RAR | 2,638,775 | 40.7 | | 352 |
3 | BZ2 | 2,639,907 | 40.7 | | 72 |
4 | YZ1 | 2,825,580 | 43.6 | | 31 |
5 | LZH | 2,849,322 | 44.0 | | 41 |
6 | TGZ | 2,857,045 | 44.1 | | 26 |
7 | ARJ | 2,885,801 | 44.5 | | 26 |
8 | ZIP | 2,887,653 | 44.6 | | 23 |
9 | SIT | 2,971,469 | 45.8 | | 33 |
10 | LZH-5 | 3,000,725 | 46.3 | | 27 |
テキスト圧縮ではYZ1が強いとも言われているが、結果はご覧の通りCABの2連勝。しかし、YZ1もLZHやZIPといった有名どころより明らかに高圧縮なのは確かだ。メールやパソコン通信のログファイルは一般にテキスト形式だが、捨てるに捨てられないだけに膨大になりがち。圧縮してサイズを小さくすればディスク容量の節約となるが、圧縮形式の選択によってはサイズが大きく異なることに注目。
【対決3】データファイル(バイナリ)の圧縮 I
圧縮素材:HLPファイル 元サイズ合計: 3,752,059 Byte、ファイル数 3
| 形式 | 圧縮後サイズ (Bytes) | 圧縮率 (%) | 高 < 圧縮率 > 低 | 圧縮時間 (秒) |
1 | CAB | 2,234,578 | 60.0 | | 66 |
2 | RAR | 2,262,785 | 60.3 | | 203 |
3 | LZH | 2,345,397 | 62.5 | | 37 |
4 | TGZ | 2,364,006 | 63.0 | | 50 |
5 | ZIP | 2,364,258 | 63.0 | | 26 |
6 | ARJ | 2,368,395 | 63.1 | | 21 |
7 | BZ2 | 2,383,105 | 63.5 | | 48 |
8 | LZH-5 | 2,423,971 | 64.6 | | 21 |
9 | SIT | 2,433,441 | 64.9 | | 36 |
10 | YZ1 | 2,455,882 | 65.5 | | 27 |
バイナリ形式のデータではどうかということでヘルプファイルを圧縮してみた。ここでもCABが僅差で逃げ切って3勝目。対決1、2で強さを見せたRARはここでも2位となっているが、圧縮速度の点ではいずれも最下位という結果になっている。4~9位はグラフにも差が現れないほどの僅差なので、圧縮するヘルプファイルによっては順位が入れ替わることもあるようだ。
【対決4】データファイル(バイナリ)の圧縮 II
圧縮素材:DOCファイル 元サイズ合計: 2,123,264 Byte、ファイル数 3
| 形式 | 圧縮後サイズ (Bytes) | 圧縮率 (%) | 高 < 圧縮率 > 低 | 圧縮時間 (秒) |
1 | BZ2 | 66,426 | 3.1 | | 77 |
2 | CAB | 66,477 | 3.1 | | 29 |
3 | RAR | 71,447 | 3.4 | | 26 |
4 | YZ1 | 75,279 | 3.5 | | 2 |
5 | SIT | 75,597 | 3.6 | | 9 |
6 | TGZ | 77,701 | 3.7 | | 21 |
7 | LZH | 77,968 | 3.7 | | 8 |
8 | LZH-5 | 80,939 | 3.8 | | 6 |
9 | ZIP | 81,038 | 3.8 | | 7 |
10 | ARJ | 81,179 | 3.8 | | 7 |
別のバイナリ形式のデータではどうかということで、ワードパッド文書(DOCファイル)を圧縮してみた。こちらは新星BZ2が僅差でCABを抑え、1位になった。どの形式でも、概してDOCファイルはかなり高く圧縮されることがわかる。
【対決5】データファイル(バイナリ)の圧縮 III
圧縮素材:PDFファイル 元サイズ合計: 2,738,567 Byte、ファイル数 3
| 形式 | 圧縮後サイズ (Bytes) | 圧縮率 (%) | 高 < 圧縮率 > 低 | 圧縮時間 (秒) |
1 | CAB | 2,097,397 | 76.6 | | 47 |
2 | RAR | 2,114,248 | 77.2 | | 125 |
3 | LZH | 2,160,567 | 78.9 | | 20 |
4 | BZ2 | 2,171,936 | 79.3 | | 38 |
5 | YZ1 | 2,179,923 | 79.6 | | 21 |
6 | TGZ | 2,180,586 | 79.6 | | 12 |
7 | ARJ | 2,188,855 | 79.9 | | 12 |
8 | ZIP | 2,189,958 | 80.0 | | 13 |
9 | SIT | 2,196,937 | 80.2 | | 17 |
10 | LZH-5 | 2,269,767 | 82.9 | | 14 |
もともとある程度圧縮されているバイナリデータではどうかということでPDFファイルを圧縮してみた。結果はほとんど差がなかったが、やはりCAB、RARが強い。
【対決6】画像ファイル(バイナリ)の圧縮
圧縮素材:BMPファイル 元サイズ合計:5,281,002 Byte、ファイル数 3
| 形式 | 圧縮後サイズ (Bytes) | 圧縮率 (%) | 高 < 圧縮率 > 低 | 圧縮時間 (秒) |
1 | BZ2 | 1,997,427 | 37.8 | | 167 |
2 | CAB | 2,235,093 | 42.3 | | 82 |
3 | RAR | 2,314,246 | 43.8 | | 175 |
4 | LZH | 2,355,244 | 44.6 | | 29 |
5 | ZIP | 2,376,672 | 45.0 | | 21 |
6 | ARJ | 2,395,224 | 45.4 | | 19 |
7 | SIT | 2,397,181 | 45.4 | | 33 |
8 | TGZ | 2,399,802 | 45.4 | | 42 |
9 | LZH-5 | 2,410,935 | 45.7 | | 23 |
10 | YZ1 | 2,461,055 | 46.6 | | 30 |
非圧縮画像ファイルのスタンダードとしてフルカラーのBMPファイルを圧縮してみた。ここではBZ2が意外な強さを見せ、金星をゲット。CAB、RARもやはり強かった。なお、インターネットでよく用いられるJPEGやGIFといった画像形式は、もともと高い圧縮率で圧縮されているため、圧縮ソフトを使ってさらに圧縮しようとしてもほとんど変化がないことを付け加えておく。
【総合成績】
順位をそのまま配点とし、加算した結果をあげておく。
1 | CAB | 8 | |
2 | RAR | 14 | |
3 | BZ2 | 19 | |
4 | LZH | 26 | |
5 | TGZ | 36 | |
6 | ZIP | 40 | |
7 | ARJ | 43 | |
7 | YZ1 | 43 | |
9 | SIT | 47 | |
10 | LZH-5 | 54 | |
総合的にはCABの圧勝ということになった。もちろん圧縮素材によっては多少の順位変動はあるものの、他の圧縮素材でテストしてみても傾向が大きく変わることはないようだ。CAB形式での圧縮は時間もあまりかからず、またCAB32.DLLを使うものを含め、既に20以上のアーカイバーが対応しているため、操作性も好みのものを選べるという利点もある。一般的にはまだあまり使われていないようだが、今後注目されるべき圧縮形式だろう。また、逆に圧縮率の高さで知られるRARは、最大の圧縮率を望む場合は、かなりの圧縮時間が必要になるということを知っておくべきだろう。
さて、今回は圧縮率と圧縮速度以外の特徴には触れなかったが、それぞれの圧縮形式には圧縮率のほかにも、パスワードをかけられたり、対話型の自己解凍形式にできるなど、得意不得意がある。また、データやソフトの配布用に用いる場合は解凍可能なソフトの普及率も重要な選択基準になってくる。実際に利用する場合は、単に圧縮率で圧縮方式を選ぶのではなく、用途や目的に応じて最適なものを選択するべきだが、それらは機会を改めて解説したい。
なお、非Windows環境を含めれば、上記の圧縮形式よりさらに数パーセント小さくなる圧縮形式もある。圧縮率の熱い戦いに興味がある人は下記のページをのぞいてみるといいだろう。
□世界中の圧縮形式比較一覧「Archive Comparison Test by Jeff Gilchrist」
http://personal.nbnet.nb.ca/jeffg/
□圧縮技術関連のリンク集「Mitsuharu ARIMURA's Bookmarks on Source Coding/Data Compression」
http://www.sr3.t.u-tokyo.ac.jp/~arimura/compression_links.html
□圧縮アルゴリズムの解説「自分で作って使おう、データ圧縮プログラミング入門」
http://amethyst.ie.akita-u.ac.jp/~fukusima/compress.html
□圧縮ファイル形式や必要DLL、和製アーカイバーについての情報「統合アーカイバ・プロジェクト」
http://www.csdinc.co.jp/archiver/
◎本テストで圧縮に用いたオンラインソフト
□Explzh v2.68(LZH、CAB、TGZ、BZ2)、ZipFolders v2.03(ZIP)、WinRAR v2.05(RAR)、DeepFreezer v1.05(YZ1)、UNLHA32.DLL v1.27c(LZH)
http://www.forest.impress.co.jp/archiver.html
□CAB32.DLL v0.69(CAB)、TAR32.DLL v0.43(TGZ、BZ2)
http://www.csdinc.co.jp/archiver/
□CrAzY CloWN WIN 95/NT v2.1(ARJ)
http://www.geocities.com/SiliconValley/Peaks/7662/
□ARJ.EXE v2.60(ARJ)[MS-DOS] 343KB
ftp://ftp.iij.ad.jp/pub/simtelnet/msdos/arcers/arj260x.exe
□DropStuff for Windows 95, 98 and Windows NT 4.0 v1.0(SIT)
http://www.aladdinsys.com/
(ひぐち たかし)
|