개요
대부분의 압축 알고리즘은 원래 단일 코어 프로세서용으로 설계되었지만 멀티 코어 시대에는 속도 향상에 대한 상당한 잠재력이 있습니다. 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) 메소드를 사용하여 지정된 옵션으로 아카이브가 저장됩니다.
두 번째 예에서는 아카이브를 생성하기 전에 xz 형식에 대한 압축 매개변수를 구성합니다. 이 구성은 원하는 압축 스트림 수를 지정하는 XzArchiveSettings 개체를 사용하여 수행됩니다. 그런 다음 인수로 전달된 이러한 설정을 사용하여 새 XzArchive가 생성됩니다. 이후 소스 파일(“data.bin”)을 압축 소스로 설정하고 archive.save(“archive.xz”) 메소드를 사용해 아카이브를 저장한다.
세 번째 예에서는 LzipArchiveSettings 개체를 사용하여 LZ 아카이브를 생성하는 방법을 보여줍니다. 먼저 LZMA 압축에 사용되는 사전의 크기를 설정합니다. 다음으로 스레드 수를 4로 설정합니다. 그런 다음 LzipArchive 개체를 만들고 LzipArchiveSettings 개체를 생성자에 전달합니다. 마지막으로 아카이브할 파일을 지정하고 아카이브를 저장합니다.
7Z 아카이브의 LZMA2 압축 및 멀티스레딩
7z 형식 내의 압축 방법 중 하나인 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 아카이브를 생성합니다.
Java API 기능에 대해 지원되는 기타 Aspose.ZIP
Java의 Aspose.ZIP 라이브러리를 사용하면 ZIP 파일 문서와 관련된 다양한 작업을 원활하게 처리할 수 있습니다. 형식 변환, 파일 병합, 콘텐츠 편집 또는 데이터 추출이 필요한 경우 Aspose.ZIP은 작업 흐름을 간소화하고 생산성을 향상시키는 포괄적인 기능을 제공합니다.
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