1

サイズが約500MBの巨大なテキスト ファイルがあります。Pythonプログラムとコマンドラインの両方からGzipでアーカイブしようとしました。ただし、どちらの場合も、アーカイブされたファイルのサイズは約240MB ですが、WindowsでWinRARを使用してアーカイブすると、アーカイブされたファイルのサイズは約450KBになります。私がここに欠けているものはありますか?なぜそんなに大きな違いがあるのですか? 同様のレベルの圧縮を達成するにはどうすればよいですか?

これに関する Python コードは非常に役立つため、これにも Python のタグを付けました。

ファイルの最初の 3 行は次のとおりです。

$ head 100.txt -n 3
31731610:22783120;
22783120:
45476057:39683372;5879272;54702019;58780534;30705698;60087296;98422023;55173626;5607459;843581;11846946;97676518;46819398;60044103;48496022;35228829;6594795;43867901;66416757;81235384;42557439;40435884;60586505;65993069;76377254;82877796;94397118;39141041;2725176;56097923;4290013;26546278;18501064;27470542;60289066;43986553;67745714;16358528;63833235;92738288;77291467;54053846;93392935;10376621;15432256;96550938;25648200;10411060;3053129;54530514;97316324;
4

2 に答える 2

6

ファイルが 32K を超える繰り返しパターンで非常に冗長である可能性があります。gzip の deflate は 32K までさかのぼって一致するだけですが、他のものははるかにさかのぼって履歴を利用できます。

アップデート:

ランダム データの 64K ブロックを 4096 回 (256 MB) 繰り返したファイルを作成しました。gzip (32K ウィンドウ付き) は冗長性を認識していないため、圧縮できませんでした。gzip で 256.04 MB に拡張されました。xz (8 MB ウィンドウの LZMA) は、102 KB に圧縮しました。

于 2012-06-04T04:07:44.373 に答える
1

WinRARとGzipは、2つの非常に異なる圧縮プログラムです。それらはそれぞれ異なるアルゴリズムを使用してデータを圧縮します。ウィキペディアの各タイプの説明は次のとおりです。

RARのバージョン3は、Lempel-Ziv(LZSS)と部分一致(PPM)圧縮による予測、特にDmitryShkarinによるPPMIIのPPMd実装に基づいています。

http://en.wikipedia.org/wiki/RAR#Compression_algorithm

そしてGzip:

これは、Lempel-Ziv(LZ77)とハフマンコーディングを組み合わせたDEFLATEアルゴリズムに基づいています。

en.wikipedia.org/wiki/Gzip

私の推測では、部分マッチングによる予測とハフマン符号化がどのように機能するかには、ある種の違いがあります。そのファイルには非常に興味深いプロパティがあります...ファイルは何ですか?

于 2012-06-04T00:07:25.153 に答える