zipアーカイブの平行構成
概要
Aspose.Zip APIは、ZIPアーカイブを作成する機能を提供します。 このようなアーカイブのエントリは独立して圧縮できるため、アーカイブの作成をある程度並行することが可能です。
zipマルチスレッド:説明
Paralleloptionsを使用して、いくつかのCPUコアでアーカイブを準備する必要があることを示します。
parallecompressinmemory
(
getParallelcompressinmemory/
SetParallecompressinmemory)の設定は、マルチタスクに選択した戦略を示します。
ここに3つのオプションがあります。
ParallelCompressionMode.never
:すべてのエントリの圧縮は順次です。圧縮で動作するCPUコアは1つだけで、圧縮データをフラッシュします。parallelCompressionMode.always
:エントリサイズ、利用可能なメモリ、その他の要因に関係なく、異なるスレッドでのエントリの圧縮を強制します。各CPUコアは、RAMに圧縮データを保持しているファイルを同時に圧縮します。エントリが圧縮されると、結果ストリームに洗い流されます。 RAMの量が小さく、一部のNエントリ(NはCPUコアの数)の総サイズが膨大な場合、CLRで利用可能なすべてのRAMが排出し、OutFmemoryExceptonが発生する可能性があります。parallecompressionMode.auto
:インテリジェントモード。 CPUコア、エントリのサイズ、利用可能なメモリを推定し、エントリを並列または順次圧縮するかどうかを選択します。このモードでは、いくつかの小さなエントリが並行して圧縮され、他のエントリは順番に順番に圧縮されます。一般的に、このオプションを使用することは安全です。Asoppes.Zipは、推定とフォールバックとして連続圧縮に切り替えることに慎重です。このモードには「Paralleloptions」のもう1つのプロパティがあります - 「availablememorysize」( getavailablememorysize/ setavailablememorysize)。他のモードでは無意味です。大まかに言えば、それはメガバイトですべてのCPUコアを使用してエントリを圧縮しながら、割り当てられたメモリの高限です。 Aspose.Zipは、その数を使用して、並行して圧縮されるのに安全なエントリの最大サイズを推定します。順次圧縮されるしきい値を超えてエントリ。 「availablememorysize」は両刃の剣です。巨大なエントリで高すぎると、ラムの疲労、激しいスワップを生み出し、メモリの例外がなくてもよいかもしれません。設定が低すぎると、ほとんどのエントリは、スピードアップなしで連続的に圧縮されます。したがって、洗練されたユーザーは、トレードオフを考慮してそれを割り当てることができます。
典型的なデータのさまざまな並列圧縮モードで再生して、ケースで最適な設定を決定することをお勧めします。
サンプル
1try(fileoutputStream zipfile = new fileoutputStream( "archive.zip")){
2 try(archive archive = new archive()){
3 archive.createentry( "first.bin"、 "data1.bin");
4 ...
5 archive.createentry( "last.bin"、 "datan.bin");
6 Paralleloptions parlalEloptions = new Paralleloptions();
7 paralleloptions.setParallecompressinmemory(parallecompressionMode.always);
8 ArchivesAveOptions options = new archivesaveoptions();
9 options.setParalleloptions(Paralleloptions);
10 archive.save(zipfile、options);
11 }
12} catch(ioException ex){
13 System.out.println(ex);
14}