ZIP圧縮

こんにちは、Habr!

この記事は、ZIPアーカイブにファイルを正しく最大限に圧縮する方法について説明しています。 この記事を書く理由は、非常に多くのアプリケーションがZIP形式でフォーマットをパックしているからです。 この記事では、ZIP圧縮方式、ZIP圧縮アプリケーション、および圧縮の改善方法について説明します。



ZIP圧縮方法



まず、ZIPはさまざまな圧縮方法(コピー、デフレート、デフレート64、BZip2、LZMA、PPMd)をサポートすることをお勧めしますが、ほとんどのアプリケーションがこのメソッドを使用する理由から、1つの圧縮メソッド-Deflateのみを検討します。 zip形式でパックします。 以下は、実際にはZIPアーカイブであるファイル形式の短いリストです-open-file.ru (検索でASCIIヘッダー記述子を入力-PK )。 すぐに予約してください。これはほんの小さなファイルのリストです。



圧縮方法の収縮



現在、Deflate圧縮方式に基づいたいくつかのライブラリがあります。

ライブラリのデフレート 作業速度 圧縮比 用途
Zlib 高い 低い
7-zip 平均 平均 7-zipadvzip
Kzip 低い 高い kzip
したがって、ZIP用のアーカイバを選択する前に、必要な結果と、それを取得するために費やす時間を理解する必要があります。 Deflateは、圧縮率が高いほど時間がかかります。



画像



ZIPアーカイバー



このセクションでは、無料で使用できるアプリケーションのみを検討します。



7-zipアルゴリズム


ここでは、7-zipアルゴリズムが実装されている2つのプログラム、7-zipとadvzipについて説明します。

7-zipを使用してzipアーカイブを作成するとき、次のオプションを使用します



-r -mm=Deflate -y -tzip -mpass=15 -mfb=258 -mx9
      
      





advzipの特徴は、既製のzipアーカイブで既に機能していることです。 アーカイブへのパスを指定するだけで、彼自身がアーカイブを圧縮しようとします。 既成のアーカイブがすでにあり、それを解凍して再度アーカイブする必要がない場合に便利です。



Kzipアルゴリズム


kzipアルゴリズムはkzipアプリケーションに実装され、アプリケーションの実行は非常に遅くなりますが、ほとんどの場合、最高の結果が得られます。 ZIPの圧縮率を改善/悪化させる設定(/ s、/ n、/ b)があります。



推奨事項



ここで、最適な圧縮率を得る方法についていくつかの推奨事項を示したいと思いました(推奨事項は個人的な経験に基づいています)。

練習する



そして、私はそれがどのように機能するかを示すことにしました。 例えば、私はiPad用のゲーム-Angry Birds HDバージョン2.0.0を取りました。 ゲームの元のサイズは13,547,363バイトです。

用途 結果、バイト 経過時間、秒
advzip 12 891 768 195
7-zip 12 891 143 720
kzip 12 877 794 2770
7-zip + advzip 12 858 419 -
kzip + advzip 12 849 101 -
kzip + 7-zip + advzip 12 842 760 -


ご覧のとおり、zipmixは圧縮率をわずかに改善できます。 個人的には、最大値を取得する必要がある場合、3つの結果(kzip + advzip + 7-zip)をすべて1つにまとめるだけです。 これは、kzipでパラメーターを反復処理するよりもはるかに優れています。



All Articles