7zip ファイルが RAW ファイルよりも大きいのはなぜですか?

7zip ファイルが RAW ファイルよりも大きいのはなぜですか?

重複の可能性あり:
ZIP 圧縮では何も圧縮されないのはなぜですか?

.exe ファイルを 7zip で圧縮しようとしましたが、実際にはサイズが大きくなってしまいました。

ここに画像の説明を入力してください

これは予想通りの結果でしょうか?

答え1

それは、エントロピ。 見るウィキペディア

基本的な考え方は、もし圧縮操作があれば、いつもファイルを小さくする場合、論理的には、その圧縮操作によって、どのファイルも0バイトに縮小でき、すべてのデータを保持できるはずです。しかし、これは不条理ななぜなら、0バイトでは何も情報を伝達できないことがわかっているからです。つまり、存在できない常に入力を小さくする圧縮アルゴリズム。もしそうなら、どんな情報でも0バイトで保存できるが、0バイトは不在情報量が多いため、同時にいいえ情報と全て情報。したがって、それは不合理です。

この理論的な概念により、あなたが使用するすべての圧縮プログラムは増加 の大きさ(または、せいぜい同じ大きさを維持する)いくつかのつまり、設計または使用する圧縮アルゴリズムによっては、小さくなる入力と小さくならない入力が存在することになります。

すでに圧縮されたデータは、ロスレス圧縮アルゴリズムのほとんどが同じ理論原理に基づいているため、一般的にさらなる圧縮には適していません。圧縮が不十分なデータをさらに圧縮することも可能ですが、これは、元のデータから利用可能な最良のアルゴリズムを使用して単純に圧縮するよりも効率が低くなります。

たとえば、100MBのテキストファイルを通常のZipアルゴリズムで圧縮すると、50MBに圧縮される可能性があります。その後、LZMA2でZipファイルを圧縮すると、40MBまたは45MBに圧縮される可能性があります。これは、LZMAにはより高い圧縮比Zip よりも圧縮可能なデータのほとんどを圧縮できます。したがって、Zip は Zip からすべてのエントロピーを完全に吸い取るわけではないので、Zip データも圧縮できるのは当然です。ただし、Zip コンテナーを完全に削除すると、生のテキストを LZMA2 で圧縮することでさらに小さくできる可能性があり、30 - 35 MB 程度になる可能性があります (これらは概念を説明するための「空想的な数字」にすぎません)。

あなたが圧縮しようとしているバイナリの場合、それは大きい7-Zip ファイル形式は独自の内部構造を作成し、すでに圧縮されている実行可能ファイルのデータを 7-Zip 形式にパックする必要があるためです。これには、辞書、ファイル ヘッダーなどが含まれます。これらの追加データは通常、データ自体を圧縮することで節約できる分よりも大きいのですが、圧縮しようとしている実行可能ファイルは、すでに何らかの LZMA 形式で圧縮されているようです。そうでなければ、実行可能ファイルのサイズが 2 MB (これはかなり大きい) 増えるのではなく、縮小されるか、わずかに増えることになります。

答え2

7zで使用される基本的な圧縮アルゴリズムは無損失のつまり、ファイルを何度も繰り返し圧縮・解凍することができます。さらに、各繰り返しの後でもファイルはその通り同じ。

残念ながら、無損失の圧縮アルゴリズムは、何度も適用でき、常に良い結果が得られます。ただし、越えることのできない厳密な境界があります。大まかに言えば、この境界は、入力シーケンスがランダム データをどれだけ密集しているかによって決まります。とりわけ、ロスレス アルゴリズムは、ファイル圧縮、インターネット HTML データ転送、バックアップ、および出力ファイルがまったく同じ元の入力ファイルに解凍されることが期待されるその他の操作に使用されます。

対照的に無損失の圧縮すると、ファイルサイズが常に減少することが期待できます。非可逆圧縮アルゴリズム欠点は、その通り圧縮と解凍を 1 回繰り返した後、元のファイルを復元します。これらのアルゴリズムは、オーディオ/ビデオ/画像の送信と保存で最もよく知られています。

zip2 形式ルズマLZMA2およびその他のアルゴリズム7zフォーマットはすべて無損失のしたがって、それ以上圧縮できなくなる制限があります。さらに、実行可能イメージ (.exe) は通常、高度に圧縮されたファイルです。7zip他の多くの圧縮ツールと同様に、メタデータが埋め込まれるため、出力ファイルが大きくなる可能性があります。

頭の体操: ファイルのサイズを常に縮小できるロスレス アルゴリズムがあったらどうなるでしょうか?

この場合、圧縮されたファイルは常に入力ファイルよりも小さくなります。それが不可能な理由については、以下のコメントを参照してください。

答え3

元の実行ファイルがすでに圧縮されている場合(または高度に圧縮されたデータや圧縮できないデータが含まれている場合)、圧縮するとサイズが大きくなります。

答え4

圧縮のアイデア:

圧縮ソフトウェアはファイルのリストを作成し、重複するコンテンツを削除します。

すでに圧縮されているファイルを圧縮すると、圧縮されたファイルが元のファイルよりも大きくなる可能性があります。

関連情報