Visão geral
Embora a maioria dos algoritmos de compactação tenha sido originalmente projetada para processadores de núcleo único, a era multinúcleo oferece um potencial significativo de aceleração. Aspose.ZIP aproveita isso fornecendo otimização multi-core para determinados formatos de arquivo.Paralelizando arquivos BZIP2, LZIP e XZ
A paralelização está habilitada para determinados formatos de arquivo devido à sua natureza inerente baseada em blocos. Aspose.ZIP aproveita isso empregando uma abordagem comum de compactação multi-core no nível do programa. Os usuários podem controlar o número de threads usados para compactação por meio do método setCompressionThreads(int) . Quando esse valor for definido como maior que um, vários núcleos de CPU serão utilizados para compactação mais rápida.
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");
}
No Exemplo 1 demonstra a criação de um arquivo Bzip2 usando a classe Bzip2Archive. Primeiro, especificamos o arquivo fonte a ser compactado usando o método archive.setSource("data.bin"). A seguir, várias opções de compactação, incluindo o número de fluxos de compactação, podem ser configuradas usando o objeto Bzip2SaveOptions. Finalmente, o arquivo é salvo com as opções especificadas usando o método archive.save("archive.bz2", options).
No segundo exemplo, configuramos os parâmetros de compressão para o formato xz antes de criar o arquivo. Esta configuração é feita através do objeto XzArchiveSettings, onde especificamos o número desejado de fluxos de compactação. Em seguida, um novo XzArchive é criado com essas configurações passadas como argumento. Em seguida, o arquivo fonte ("data.bin") é definido como fonte para compactação e o arquivo é salvo usando o método archive.save("archive.xz").
No terceiro exemplo, demonstramos a criação de um arquivo LZ usando o objeto LzipArchiveSettings. Primeiro, definimos o tamanho do dicionário usado pela compactação LZMA. A seguir, definimos o número de threads como 4. Depois disso, criamos um objeto LzipArchive e passamos o objeto LzipArchiveSettings para o construtor. Finalmente, especificamos o arquivo a ser arquivado e salvamos o arquivo.
Compressão LZMA2 e multithreading em arquivos 7Z
Um dos métodos de compactação no formato 7z, LZMA2 , oferece suporte à compactação multithread. Semelhante aos formatos de arquivo anteriores, você pode controlar o número de threads usados com o método 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");
}
- Configurações de compactação: Começamos criando configurações de compactação usando o objeto SevenZipLZMA2CompressionSettings. Neste exemplo, o número de fluxos de compactação é definido como 4.
- Configurações de entrada: Em seguida, um objeto SevenZipEntrySettings é criado e recebe as configurações de compactação que definimos anteriormente. Esta etapa configura a compactação para cada registro individual dentro do arquivo.
- Criando o arquivo: Com todas as configurações definidas, criamos um objeto SevenZipArchive e passamos a ele as configurações de entrada. Este arquivo conterá uma única entrada chamada "first.bin" que corresponde ao arquivo de origem "data.bin".
- Salvando o arquivo: Finalmente, o arquivo criado é salvo como "result.7z" usando o método save("result.7z").
Acelere o arquivamento ZIP com compactação paralela
A paralelização para processamento mais rápido foi implementada em nível de bloco ou algoritmo para formatos de arquivo anteriores em Aspose.ZIP. No entanto, os arquivos ZIP oferecem uma vantagem única: paralelização básica durante o salvamento. Para habilitar isso, instancie um objeto ParallelOptions ao salvar o arquivo ZIP.
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);
}
Este código utiliza compactação paralela para otimizar a criação de arquivos e cria um arquivo ZIP chamado “archive.zip” de todos os arquivos na pasta “C:\Data”.
Outros recursos da API Aspose.ZIP com suporte para Java
Com a biblioteca Aspose.ZIP em Java, você pode lidar perfeitamente com várias tarefas relacionadas a documentos de arquivo ZIP. Se você precisa converter formatos, mesclar arquivos, editar conteúdo ou extrair dados, o Aspose.ZIP oferece funcionalidade abrangente para agilizar seu fluxo de trabalho e aumentar a produtividade.
Support and Learning Resources
- Learning Resources
- Documentation
- Source Code
- API References
- Tutorial Videos
- Product Support
- Free Support
- Paid Support
- Blog
- Release Notes
- Why Aspose.ZIP for Java?
- Customers List
- Success Stories