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バイトです。
用途結果、バイト経過時間、秒
advzip12 891 768195
7-zip12 891 143720
kzip12 877 7942770
7-zip + advzip12 858 419-
kzip + advzip12 849 101-
kzip + 7-zip + advzip12 842 760-

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

Source: https://habr.com/ru/post/J135696/


All Articles