複数ファイル圧縮ベンチマークテストの概要

複数ファイル圧縮ベンチマークテストの概要

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

7zip にはさまざまな圧縮方法があります。どの方法がどのタスクに最適ですか?

たとえば、LZMA と LZMA2 の違いの 1 つは、すべての CPU コアを選択できるのに対し、LZMA では 2 つのコアが最大であることです。

答え1

LZMA 2 アーカイブを処理できないシステムでアーカイブを抽出する場合を除き、LZMA 2 を使用してください。

一般的に言えば、最近の圧縮アルゴリズムのほとんどはほぼ同じ圧縮率を実現しており、一度に使用できるコアの数に関しては、使用するコアの数を決めるのはユーザー次第です。ただし、一般的に言えば (大きなアーカイブを作成する場合を除いて)、複数のコアが必要になる理由はありません。さらに、複数のコアで圧縮を行うと、ボトルネックがハード ドライブになる可能性があります。

答え2

7-Zip (少なくとも 2019 年 9 月 27 日現在) には、選択できるさまざまな設定と、それぞれの一般的な用途について非常にわかりやすく説明したヘルプ ドキュメントが組み込まれています。

ベンチマーク結果などはありませんが、自分が「偶然ひどい」設定ではなく「十分に良い」設定を選んでいるという自信を抱くには十分な情報でした。

ヘルプ ドキュメントは、7-Zip ファイル マネージャーおよび [アーカイブに追加] ダイアログ ボックスから利用できます。

私が役に立つと思ったページ ([アーカイブに追加] ダイアログ ボックスから直接開くページ) への「コンテンツ」パスは次のとおりです。

File Manager / Plugins / 7-Zip / Add to Archive Dialog Box

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

圧縮方法セクションの大まかなコピー/貼り付けは次のとおりです。

方法の説明

  • ルズマ
    • これは 7z 形式の基本圧縮方法です。7-Zip の古いバージョンでも、LZMA 方式で作成されたアーカイブを解凍できます。高い圧縮率と非常に高速な解凍を実現します。
  • LZMA2
    • 7z 形式のデフォルトの圧縮方法。LZMA2 は LZMA ベースの圧縮方法です。LZMA よりも優れたマルチスレッド サポートを提供します。ただし、場合によっては圧縮率が低下することがあります。LZMA2 で最適な圧縮率を得るには、1 または 2 個の CPU スレッドを使用します。2 個を超えるスレッドで LZMA2 を使用する場合、7-zip はデータをチャンクに分割し、これらのチャンクを個別に圧縮します (チャンクごとに 2 個のスレッド)。
  • PPMd
    • Dmitry Shkarin の PPMdH アルゴリズムに若干の変更を加えたものです。通常、テキスト ファイルに対して高い圧縮率と高速性を提供します。
  • ZIP2形式
    • BWT アルゴリズムに基づく標準的な圧縮方法です。通常、テキスト ファイルに対して高速かつ非常に優れた圧縮率を実現します。
  • 収縮する
    • ZIP および GZip 形式の標準的な圧縮方式です。圧縮率はそれほど高くありませんが、圧縮と解凍が非常に高速です。Deflate 方式では 32 KB の辞書のみがサポートされます。
  • デフレート64
    • より大きな辞書 (64KB) を使用した Deflate アルゴリズムの修正バージョン。

答え3

Lzma2 は 4 つ以上のコアを使用すると高速になり、圧縮率も向上します。このドキュメントすべてを説明します。

答え4

リンクはウェイバックマシンで見つかります:

https://web.archive.org/web/20221015140740/http://www.maximumcompression.com/data/summary_mf2.php

(テーブルを再フォーマットするのは面倒でした。なぜ HTML テーブルを独自の形式に変換できないのか不思議です)

複数ファイル圧縮ベンチマークテストの概要

ファイルタイプ: 複数のファイルタイプ (合計 46 個)

このテストで圧縮するファイル数: 510

合計ファイルサイズ (バイト) : 316.355.757

平均ファイルサイズ(バイト): 620,305

最大ファイルサイズ (バイト) : 18,403,071

最小ファイル(バイト): 3,554

このテストは、ロスレス データ コンプレッサの「現実の」パフォーマンスをモデル化するように設計されています。テスト セットには、「アーカイバを最もよく使用する用途」を念頭に置いて選択されたさまざまなファイル タイプが混在しています。テスト セットには、圧縮ソフトウェアを使用する通常のユーザーがこれらのファイルを圧縮に使用する頻度によって重み付けされたデータ (セット内のファイル タイプと割合の両方) が含まれている必要があります。したがって、たとえば、セットには .ocx ファイルよりも txt ファイルが多くなります (はい、これは任意です)。セットには 100 個のファイルが含まれており、合計サイズは 300 MB を超えています。大規模なコレクションの目的は、「ノイズ」をフィルター処理することです。コンプレッサは 1 つまたは 2 つのファイル タイプではパフォーマンスが低下する可能性がありますが、非常に大規模なコレクションではそれほど問題にはなりません。

CCM や BZIP2 などの一部のプログラムは、一度に 1 つのファイルしか圧縮できません。これらのプログラムでは、すべてのファイルを含む単一の TAR ファイルが作成されます。この TAR ファイル内のファイルは、サフィックス、次に名前のアルファベット順に並べられます。これらの圧縮プログラムの結果は、tarred 列に「Y」でマークされます。

テストセットは次のファイルタイプで構成されています:

ファイルタイプ) 説明 合計の% ファイル数
目次、MBX Eudora メールボックス 12.31 16
EXE、DLL、OCX、DRV 実行可能ファイル 10.99 35
TXT、RTF、DIC、LNG 複数の言語のテキストファイル 10.21 41
BMP、TIFF ビットマップ/TIF画像 7.88 15
ログ ログファイル 6.34 6
PHP、HTML HTML ファイル 6.13 19
ドキュメント MS Word ファイル 6.08 30
C、CPP、PAS、DCU ソースコード 6.00 235
MDB、CSV データベース 4.26 7
ヘルパー Windows ヘルプ ファイル 4.23 7
CBF、CBG 圧縮済みチェスデータベース 3.55 2
WAVAファイル Wave サウンドファイル 3.45 9
XLSX XLS スプレッドシート 2.41 16
PDF Adobe Acrobat ドキュメント 1.59 6
TTF TrueTypeフォント 1.15 15
防御力 ウイルス定義ファイル 1.10 3
画像形式 画像ファイル 0.53 9
中国語 圧縮済みのヘルプファイル 0.49 2
INI、INF INIファイル 0.42 10
その他 DAT、JAR、M3D、SYS、PPT、MAP、WP、RLL、RIB など。 10.88 27

これは「現実世界」のテストであるという事実を考慮して、最適な圧縮のために使用する最善の(コマンドラインまたは GUI)スイッチの組み合わせは検討せず、「一般ユーザー」が行うように、限定されたセットのみをテストします。7-zip の場合、たとえば GUI を使用して Ultra 圧縮方法(優れたコマンドライン スイッチを使用すれば簡単に上回ることができます)を選択し、WinRar は最大辞書サイズとソリッド アーカイブなどでテストします。プログラムは最大 800 MB のメモリを使用でき、圧縮段階を 12 時間以内に完了する必要があります。MFC にリストされるには、圧縮サイズが元のサイズと比較して 50% 以下である必要があります。

単一ファイルのテストでは、圧縮時間を表に追加してほしいという要望を多数いただきました。単一ファイルの概要ファイルに記載されている理由でこれを行いませんでしたが、この複数ファイルのテストでは圧縮時間を測定する予定です。また、このテストセットを「非公開」にすることにしたので、開発者がこの特定のテストに合わせてプログラムを調整することが難しくなります。これが「実際の」パフォーマンス テストを取得する最も公平な方法だと思います。

スコアリング システム: 圧縮サイズが最も小さいプログラムが、最良のプログラムとみなされます。最も効率的な (つまり、最大限に活用された) プログラムは、アーカイブを作成するのにかかった圧縮 + 解凍時間 (秒単位) に、アーカイブ サイズの累乗を掛けて、測定された最小のアーカイブ サイズで割った値で計算されます。スコアが低いほど良いプログラムです。基本的な考え方は、X が Y の 2 倍の速度で圧縮でき、X のアーカイブ サイズが Y のサイズより 10% 大きい場合、X の圧縮率は Y の圧縮率と同じであるということです (この式を正しく導いてくれた Uwe Herklotz 氏に感謝します)。

スコア_X = パワー(2; ((サイズ_X / サイズ_TOP) - 1) / 0,1) * 時間_X

  score_X     efficiency score for a certain compressor X

  time_X      time elapsed by compressor X (comp + decomp time)

  size_X      archive size achieved with compressor X

  size_TOP    archive size by top archiver (smallest benchmark result)

圧縮サイズと圧縮時間に基づいてコンプレッサー効率を計算する式

「0,1」は 10% を表し、2 の累乗により、(トップと比較して) 結果が 10% 悪くなるごとに時間が 2 倍になるため、すべてのアーカイバ (トップ コンプレッサーを除く) は時間に関してペナルティを受けます。トップ コンプレッサーのスコアは常にその時間値と同じです。

関連情報