Composici�n paralela de archivos ZIP
**Descripci�n general
La API de Aspose.ZIP permite componer archivos ZIP. Debido a que las entradas de dicho archivo se pueden comprimir de forma independiente, es posible paralelizar la creaci�n de archivos hasta cierto punto.
ZIP multihilo: explicaci�n
Utilice ParallelOptions para indicar que el archivo debe prepararse con varios n�cleos de CPU.
Establecer ParallelCompressInMemory (
getParallelCompressInMemory/
setParallelCompressInMemory) indica la estrategia que elegimos para la multitarea.
Aqu� hay tres opciones:
ParallelCompressionMode.Never: la compresi�n de todas las entradas es secuencial. S�lo un n�cleo de la CPU trabaja en la compresi�n y vac�a los datos comprimidos a medida que llegan.ParallelCompressionMode.Always: Fuerza la compresi�n de las entradas en diferentes hilos independientemente del tama�o de la entrada, la memoria disponible y otros factores. Cada n�cleo de la CPU comprime simult�neamente un fichero manteniendo sus datos comprimidos en la RAM. Una vez comprimida la entrada, se descarga en el flujo de resultados. Si su cantidad de RAM es peque�a y el tama�o total de algunas N entradas (donde N es el n�mero de n�cleos de CPU) es enorme puede ocurrir que toda la RAM disponible para CLR se agote y surja OutOfMemoryExcepton.ParallelCompressionMode.Auto
: El modo inteligente. Estima los n�cleos de la CPU, el tama�o de las entradas, la memoria disponible y elige si comprimir las entradas en paralelo o secuencialmente. En este modo, algunas entradas peque�as se comprimen en paralelo, mientras que otras se comprimen secuencialmente. Generalmente, es seguro utilizar esta opci�n, Aspose.ZIP es cauteloso con las estimaciones y cambia a la compresi�n secuencial como alternativa. Hay una propiedad m�s deParallelOptionspara este modo -AvailableMemorySize([getAvailableMemorySize](4)/[setAvailableMemorySize](5)). Es in�til para cualquier otro modo. A grandes rasgos, es el l�mite m�ximo de memoria asignada mientras se comprimen entradas con todos los n�cleos de la CPU, en megabytes. Aspose.ZIP utiliza ese n�mero para estimar el mayor tama�o de entrada que es seguro comprimir en paralelo. Las entradas por encima del umbral se comprimir�n secuencialmente. ElAvailableMemorySize` es un arma de doble filo: si se fija demasiado alto con entradas enormes, puede producir agotamiento de RAM, swap intenso, e incluso podr�a producirse una excepci�n de falta de memoria. Si se establece demasiado bajo, la mayor�a de las entradas se comprimir�n de forma secuencial sin mucha aceleraci�n. Por lo tanto, los usuarios sofisticados pueden asignarlo considerando un compromiso.
Le animamos a jugar con diferentes modos de compresi�n paralela en sus datos t�picos para determinar cu�l es la mejor configuraci�n en su caso.
**Ejemplo
1try (FileOutputStream zipFile = new FileOutputStream("archivo.zip")) {
2 try (Archive archive = new Archive()) {
3 archive.createEntry("primer.bin", "datos1.bin");
4 ...
5 archive.createEntry("last.bin", "dataN.bin");
6 ParallelOptions parallelOptions = new ParallelOptions();
7 parallelOptions.setParallelCompressInMemory(ParallelCompressionMode.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}