概要

ほとんどの圧縮アルゴリズムはもともとシングルコア プロセッサ向けに設計されていますが、マルチコア時代には高速化の大きな可能性が秘められています。 Aspose.ZIP は、特定のアーカイブ形式に対してマルチコア最適化を提供することでこれを活用します。

BZIP2、LZIP、および XZ アーカイブの並列化

特定のアーカイブ形式では、その固有のブロックベースの性質により、並列化が有効になります。 Aspose.ZIP は、プログラム レベルで一般的なマルチコア圧縮アプローチを採用することでこれを活用します。ユーザーは、 setCompressionThreads(int) メソッドを使用して、圧縮に使用されるスレッドの数を制御できます。この値を 1 より大きく設定すると、圧縮を高速化するために複数の CPU コアが使用されます。

Parallel compression to BZIP2

    try (Bzip2Archive archive = new Bzip2Archive()) {
        archive.setSource("data.bin");
        Bzip2SaveOptions options = new Bzip2SaveOptions();
        options.setCompressionThreads(4);
        archive.save("archive.bz2", options);
    }

Parallel compression to XZ

    XzArchiveSettings settings = new XzArchiveSettings();
    settings.setCompressionThreads(4);
    try (XzArchive archive = new XzArchive(settings)) {
        archive.setSource("data.bin");
        archive.save("archive.xz");
    }

Parallel compression to LZ

    LzipArchiveSettings settings = new LzipArchiveSettings(16777216);
    settings.setCompressionThreads(4);
    try (LzipArchive archive = new LzipArchive(settings)) {
        archive.setSource("data.bin");
        archive.save("archive.lz");
    }

例 1 では、Bzip2Archive クラスを使用して Bzip2 アーカイブを作成する方法を示します。まず、archive.setSource(“data.bin”) メソッドを使用して、圧縮するソース ファイルを指定します。次に、Bzip2SaveOptions オブジェクトを使用して、圧縮ストリームの数を含むさまざまな圧縮オプションを構成できます。最後に、archive.save(“archive.bz2”, options) メソッドを使用して、指定されたオプションでアーカイブが保存されます。
2 番目の例では、アーカイブを作成する前に、xz 形式の圧縮パラメータを構成します。この構成は XzArchiveSettings オブジェクトを使用して行われ、ここで必要な圧縮ストリームの数を指定します。次に、引数として渡されたこれらの設定を使用して、新しい XzArchive が作成されます。その後、ソース ファイル (“data.bin”) が圧縮元として設定され、archive.save(“archive.xz”) メソッドを使用してアーカイブが保存されます。
3 番目の例では、LzipArchiveSettings オブジェクトを使用して LZ アーカイブを作成する方法を示します。まず、LZMA 圧縮で使用される辞書のサイズを設定します。次に、スレッド数を 4 に設定します。その後、LzipArchive オブジェクトを作成し、LzipArchiveSettings オブジェクトをコンストラクターに渡します。最後に、アーカイブするファイルを指定し、アーカイブを保存します。

7Z アーカイブの LZMA2 圧縮とマルチスレッド

7z 形式内の圧縮方法の 1 つである LZMA2 は、マルチスレッド圧縮をサポートしています。以前のアーカイブ形式と同様に、setCompressionThreads(int) メソッドを使用して使用するスレッドの数を制御できます。

    SevenZipLZMA2CompressionSettings compSettings = new SevenZipLZMA2CompressionSettings();
    compSettings.setCompressionThreads(4);
    SevenZipEntrySettings settings = new SevenZipEntrySettings(compSettings);
    try (SevenZipArchive archive = new SevenZipArchive(settings)) {
        archive.createEntry("first.bin", "data.bin");
        archive.save("result.7z");
    }
  • 圧縮設定: まず、SevenZipLZMA2CompressionSettings オブジェクトを使用して圧縮設定を作成します。この例では、圧縮ストリームの数は 4 に設定されています。
  • エントリ設定: 次に、SevenZipEntrySettings オブジェクトが作成され、前に定義した圧縮設定が割り当てられます。このステップでは、アーカイブ内の個々のレコードの圧縮を構成します。
  • アーカイブの作成: すべての設定が完了したら、SevenZipArchive オブジェクトを作成し、それにエントリ設定を渡します。このアーカイブには、ソース ファイル「data.bin」に対応する「first.bin」という名前の単一のエントリが含まれます。
  • アーカイブの保存: 最後に、作成されたアーカイブが保存されます。 save("result.7z") メソッドを使用して "result.7z" として指定します。

並列圧縮による ZIP アーカイブの高速化

Aspose.ZIP の以前のアーカイブ形式では、処理を高速化するための並列化がブロック レベルまたはアルゴリズム レベルで実装されています。ただし、ZIP アーカイブには、保存中のエントリーレベルの並列化という独特の利点があります。これを有効にするには、ZIP アーカイブを保存するときに ParallelOptions オブジェクトをインスタンス化します。

    try (Archive archive = new Archive()) {
        archive.createEntries("C:\\Data");
        ParallelOptions parOptions = new ParallelOptions();
        parOptions.setParallelCompressInMemory(ParallelCompressionMode.Auto);
        ArchiveSaveOptions options = new ArchiveSaveOptions();
        options.setParallelOptions(parOptions);
        archive.save("archive.zip", options);
    } 

このコードは、並列圧縮を利用してアーカイブの作成を最適化し、「C:\Data」フォルダー内のすべてのファイルから「archive.zip」という名前の ZIP アーカイブを作成します。

サポートされているその他の Aspose.ZIP for Java API 機能

Java の Aspose.ZIP ライブラリを使用すると、ZIP ファイル ドキュメントに関連するさまざまなタスクをシームレスに処理できます。形式の変換、ファイルの結合、コンテンツの編集、またはデータの抽出が必要な場合でも、Aspose.ZIP はワークフローを合理化し、生産性を向上させるための包括的な機能を提供します。

  

Support and Learning Resources

  
  

Aspose.Zip offers individual archive processing APIs for other popular development environments, listed below: