Tổng quan

Trong khi hầu hết các thuật toán nén ban đầu được thiết kế cho các bộ xử lý lõi đơn, thời đại đa lõi mang lại tiềm năng tăng tốc đáng kể. Aspose.ZIP tận dụng điều này bằng cách cung cấp tối ưu hóa đa lõi cho các định dạng lưu trữ nhất định.

Song song lưu trữ BZIP2, LZIP và Xperia

Tính năng song song hóa được bật cho một số định dạng lưu trữ nhất định do tính chất dựa trên khối vốn có của chúng. Aspose.ZIP tận dụng điều này bằng cách sử dụng phương pháp nén đa lõi phổ biến ở cấp chương trình. Người dùng có thể kiểm soát số lượng luồng được sử dụng để nén thông qua phương thức setCompressionThreads(int) . Khi giá trị này được đặt thành lớn hơn một, nhiều lõi CPU sẽ được sử dụng để nén nhanh hơn.

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");
    }

Trong Ví dụ 1 trình bày việc tạo một kho lưu trữ Bzip2 bằng lớp Bzip2Archive. Đầu tiên, chúng tôi chỉ định tệp nguồn sẽ được nén bằng phương thức archive.setSource("data.bin"). Tiếp theo, các tùy chọn nén khác nhau, bao gồm số luồng nén, có thể được cấu hình bằng đối tượng Bzip2SaveOptions. Cuối cùng, kho lưu trữ được lưu với các tùy chọn đã chỉ định bằng phương thức archive.save("archive.bz2", options).
Trong ví dụ thứ hai, chúng tôi định cấu hình các tham số nén cho định dạng xz trước khi tạo kho lưu trữ. Cấu hình này được thực hiện bằng cách sử dụng đối tượng XzArchiveSettings, trong đó chúng tôi chỉ định số lượng luồng nén mong muốn. Sau đó, XzArchive mới được tạo với các cài đặt này được chuyển làm đối số. Sau đó, tệp nguồn ("data.bin") được đặt làm nguồn để nén và kho lưu trữ được lưu bằng phương thức archive.save("archive.xz").
Trong ví dụ thứ ba, chúng tôi minh họa việc tạo một kho lưu trữ LZ bằng cách sử dụng đối tượng LzipArchiveSettings. Đầu tiên, chúng tôi đặt kích thước của từ điển được sử dụng bởi nén LZMA. Tiếp theo, chúng ta đặt số lượng luồng là 4. Sau đó, chúng ta tạo một đối tượng LzipArchive và chuyển đối tượng LzipArchiveSettings cho hàm tạo. Cuối cùng, chúng tôi chỉ định tệp sẽ được lưu trữ và lưu tệp lưu trữ.

Nén LZMA2 và đa luồng trong kho lưu trữ 7Z

Một trong những phương pháp nén ở định dạng 7z, LZMA2 , hỗ trợ nén đa luồng. Tương tự như các định dạng lưu trữ trước đó, bạn có thể kiểm soát số lượng luồng được sử dụng bằng phương thức 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");
    }
  • Cài đặt nén: Chúng tôi bắt đầu bằng cách tạo cài đặt nén bằng cách sử dụng đối tượng SevenZipLZMA2CompressionSettings. Trong ví dụ này, số lượng luồng nén được đặt thành 4.
  • Cài đặt mục nhập: Tiếp theo, đối tượng SevenZipEntrySettings được tạo và gán các cài đặt nén mà chúng tôi đã xác định trước đó. Bước này định cấu hình tính năng nén cho từng bản ghi riêng lẻ trong kho lưu trữ.
  • Tạo kho lưu trữ: Với tất cả các cài đặt đã có, chúng tôi tạo một đối tượng SevenZipArchive và chuyển cho nó cài đặt mục nhập. Kho lưu trữ này sẽ chứa một mục duy nhất có tên "first.bin" tương ứng với tệp nguồn "data.bin".
  • Lưu kho lưu trữ: Cuối cùng, kho lưu trữ đã tạo sẽ được lưu dưới dạng "result.7z" bằng phương thức save("result.7z").

Tăng tốc độ lưu trữ ZIP bằng nén song song

Tính năng song song hóa để xử lý nhanh hơn đã được triển khai ở cấp khối hoặc cấp thuật toán cho các định dạng lưu trữ trước đó trong Aspose.ZIP. Tuy nhiên, kho lưu trữ ZIP có một lợi thế duy nhất: song song hóa cấp độ đầu vào trong quá trình lưu. Để kích hoạt tính năng này, hãy khởi tạo một đối tượng ParallelOptions khi lưu kho lưu trữ 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);
    } 

Mã này sử dụng tính năng nén song song để tối ưu hóa việc tạo tệp lưu trữ và tạo tệp lưu trữ ZIP có tên "archive.zip" từ tất cả các tệp trong thư mục "C:\Data".

Aspose.ZIP được hỗ trợ khác cho các tính năng API Java

Với thư viện Aspose.ZIP trong Java, bạn có thể xử lý liền mạch các tác vụ khác nhau liên quan đến tài liệu tệp ZIP. Cho dù bạn cần chuyển đổi định dạng, hợp nhất tệp, chỉnh sửa nội dung hay trích xuất dữ liệu, Aspose.ZIP đều cung cấp chức năng toàn diện để hợp lý hóa quy trình làm việc của bạn và nâng cao năng suất.

  

Support and Learning Resources

  
  

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