概述

雖然大多數壓縮演算法最初是為單核心處理器設計的,但多核心時代提供了巨大的加速潛力。 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。最後,我們指定要歸檔的文件並儲存歸檔。

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。此步驟為存檔中的每個單獨記錄配置壓縮。該檔案將包含一個名為「first.bin」的條目,對應於來源檔案「data.bin」。 ("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 檔案。

其他支援的 Aspose.ZIP for Java API 功能

使用Java中的Aspose.ZIP庫,您可以無縫處理與ZIP文件文件相關的各種任務。無論您需要轉換格式、合併文件、編輯內容或提取數據,Aspose.ZIP 都提供全面的功能來簡化您的工作流程並提高工作效率。

  

Support and Learning Resources

  
  

Aspose.Zip offers individual archive processing APIs for other popular development environments, listed below: