Configuración multiproceso para archivos Unix en C#
Descripción general
XZ,
Bzip2 y
Lzip son comunes en Linux. Gracias a su estructura de bloques se pueden comprimir en varios hilos. La API Aspose.ZIP proporciona propiedades CompressionThreads
para que todos utilicen varios núcleos de CPU en compresión. Configurarlo en más de uno implica compresión multinúcleo; dejarlo así, la opción predeterminada, conduce a la compresión con un solo núcleo de CPU.
Compresión multiproceso XZ
Hay una propiedad
CompressionThreads en XzArchiveSettings
.
El siguiente ejemplo de código muestra cómo comprimir un archivo usando la instancia de XzArchive.
Pasos: Crear archivo XZ de compresión multiproceso mediante C#
- Abra una secuencia de archivos para el archivo XZ usando FileMode.Create para escribir los datos comprimidos.
- Abra el archivo fuente (data.bin) usando FileMode.Open y configúrelo como los datos a comprimir.
- Cree una instancia de XzArchiveSettings, especificando:
- CheckType como Crc32 para verificación de integridad.
- CompressionThreads establecido en 4 para compresión multiproceso.
- Cree una instancia de XzArchive, pasando la configuración creada anteriormente.
- Utilice SetSource para asignar el archivo fuente para la compresión.
- Guarde el archivo XZ comprimido usando el método Guardar
1usando (FileStream xzFile = File.Open("archive.xz", FileMode.Create))
2{
3 usando (FileStream fuente = File.Open("data.bin", FileMode.Open, FileAccess.Read))
4 {
5 configuración var = new XzArchiveSettings() { CheckType = XzCheckType.Crc32, CompressionThreads = 4 };
6 usando (archivo var = nuevo XzArchive (configuración))
7 {
8 archive.SetSource(fuente);
9 archivo.Guardar(xzFile);
10 }
11 }
12}
Compresión multiproceso Bzip2
Hay una propiedad
CompressionThreads en Bzip2SaveOptions
.
El siguiente ejemplo de código muestra cómo comprimir un archivo usando la instancia Bzip2Archive.
Pasos: Cree un archivo Bzip2 con máxima compresión y subprocesos múltiples mediante C#< /fuerte>
- Abra una secuencia de archivos para el archivo Bzip2 usando FileMode.Create para almacenar la salida comprimida.
- Abra el archivo fuente (data.bin) con FileMode.Open y FileAccess.Read para leer los datos sin comprimir.
- Cree una instancia de Bzip2Archive y utilice el método SetSource para asignar el archivo fuente para la compresión.
- Utilice el método Guardar para comprimir los datos en el archivo Bzip2, pasando:
- Bzip2SaveOptions(9) para establecer el nivel máximo de compresión.
- Establezca CompressionThreads en 4 para compresión multiproceso.
1 using (FileStream bz2File = File.Open("archive.bz2", FileMode.Create))
2 {
3 using (FileStream source = File.Open("data.bin", FileMode.Open, FileAccess.Read))
4 {
5 using (Bzip2Archive archive = new Bzip2Archive())
6 {
7 archive.SetSource(source);
8 archive.Save(bz2File, new Bzip2SaveOptions(9) { CompressionThreads = 4 });
9 }
10 }
11 }
Compresión multiproceso Lzip
Hay una propiedad
CompressionThreads en XzArchiveSettings
.
El siguiente ejemplo de código muestra cómo comprimir un archivo usando la instancia de XzArchive.
Pasos: Cree un archivo Lzip con un tamaño de diccionario personalizado y subprocesos múltiples mediante C# 1. Abra una secuencia de archivos para el archivo Lzip usando FileMode.Create para crear el archivo de salida comprimido. 2. Abra el archivo fuente (data.bin) con FileMode.Open y FileAccess.Read para leer los datos sin comprimir. 3. Cree una instancia de LzipArchiveSettings, especificando un tamaño de diccionario de 16777216 bytes (16 MB) y habilitando subprocesos múltiples con CompressionThreads = 4. 4. Cree una instancia de LzipArchive con la configuración definida anteriormente. 5. Utilice SetSource para asignar el archivo fuente para la compresión. 6. Comprima y guarde el archivo usando el método Guardar, pasando la secuencia del archivo Lzip de salida.
1 using (FileStream lzFile = File.Open("archive.lz", FileMode.Create))
2 {
3 using (FileStream source = File.Open("data.bin", FileMode.Open, FileAccess.Read))
4 {
5 var settings = new LzipArchiveSettings(16777216) { CompressionThreads = 4 }
6 using (LzipArchive archive = new LzipArchive(settings))
7 {
8 archive.SetSource(source);
9 archive.Save(lzFile);
10 }
11 }
12 }
En todas las muestras se utilizan cuatro hilos.