Ringkasan

Meskipun sebagian besar algoritma kompresi pada awalnya dirancang untuk prosesor single-core, era multi-core menawarkan potensi percepatan yang signifikan. Aspose.ZIP memanfaatkan ini dengan menyediakan optimasi multi-core untuk format arsip tertentu.

Memparalelkan Arsip BZIP2, LZIP, dan XZ

Paralelisasi diaktifkan untuk format arsip tertentu karena sifatnya yang berbasis blok. Aspose.ZIP memanfaatkan ini dengan menggunakan pendekatan kompresi multi-inti yang umum di tingkat program. Pengguna dapat mengontrol jumlah thread yang digunakan untuk kompresi melalui metode setCompressionThreads(int) . Jika nilai ini disetel lebih besar dari satu, beberapa inti CPU akan digunakan untuk kompresi yang lebih cepat.

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

Contoh 1 menunjukkan pembuatan arsip Bzip2 menggunakan kelas Bzip2Archive. Pertama, kita tentukan file sumber yang akan dikompres menggunakan metode archive.setSource("data.bin") . Selanjutnya, berbagai opsi kompresi, termasuk jumlah aliran kompresi, dapat dikonfigurasi menggunakan objek Bzip2SaveOptions. Terakhir, arsip disimpan dengan opsi yang ditentukan menggunakan metode archive.save("archive.bz2", options) .
Pada contoh kedua, kita mengkonfigurasi parameter kompresi untuk format xz sebelum membuat arsip. Konfigurasi ini dilakukan menggunakan objek XzArchiveSettings, di mana kita menentukan jumlah aliran kompresi yang diinginkan. Kemudian, XzArchive baru dibuat dengan pengaturan ini diteruskan sebagai argumen. Setelah itu, file sumber ("data.bin") ditetapkan sebagai sumber kompresi, dan arsip disimpan menggunakan metode archive.save("archive.xz").
Pada contoh ketiga, kami mendemonstrasikan pembuatan arsip LZ menggunakan objek LzipArchiveSettings. Pertama, kita atur ukuran kamus yang digunakan oleh kompresi LZMA. Selanjutnya, kita atur jumlah thread menjadi 4. Setelah itu, kita membuat objek LzipArchive dan meneruskan objek LzipArchiveSettings ke konstruktor. Terakhir, kita tentukan file yang akan diarsipkan dan simpan arsipnya.

Kompresi LZMA2 dan Multithreading di Arsip 7Z

Salah satu metode kompresi dalam format 7z, LZMA2 , mendukung kompresi multithread. Mirip dengan format arsip sebelumnya, Anda dapat mengontrol jumlah thread yang digunakan dengan metode 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");
    }
  • Pengaturan Kompresi: Kita mulai dengan membuat pengaturan kompresi menggunakan objek SevenZipLZMA2CompressionSettings. Dalam contoh ini, jumlah aliran kompresi diatur ke 4.
  • Pengaturan Entri: Selanjutnya, objek SevenZipEntrySettings dibuat dan menetapkan pengaturan kompresi yang kita tentukan sebelumnya. Langkah ini mengonfigurasi kompresi untuk setiap catatan individual dalam arsip.
  • Membuat Arsip: Dengan semua pengaturan yang ada, kita membuat objek SevenZipArchive dan meneruskan pengaturan entri ke dalamnya. Arsip ini akan berisi satu entri bernama "first.bin" yang sesuai dengan file sumber "data.bin".
  • Menyimpan Arsip: Terakhir, arsip yang dibuat disimpan sebagai "result.7z" menggunakan metode save("result.7z").

Mempercepat Pengarsipan ZIP dengan Kompresi Paralel

Paralelisasi untuk pemrosesan yang lebih cepat telah diterapkan pada tingkat blok atau algoritma untuk format arsip sebelumnya di Aspose.ZIP. Namun, arsip ZIP menawarkan keuntungan unik: paralelisasi tingkat awal selama penyimpanan. Untuk mengaktifkannya, buat instance objek ParallelOptions saat menyimpan arsip 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);
    } 

Kode ini menggunakan kompresi paralel untuk mengoptimalkan pembuatan arsip dan membuat arsip ZIP bernama "archive.zip" dari semua file dalam folder "C:\Data".

Aspose.ZIP Lainnya yang Didukung untuk Fitur Java API

Dengan perpustakaan Aspose.ZIP di Java, Anda dapat menangani berbagai tugas yang terkait dengan dokumen file ZIP dengan lancar. Baik Anda perlu mengonversi format, menggabungkan file, mengedit konten, atau mengekstrak data, Aspose.ZIP menyediakan fungsionalitas komprehensif untuk menyederhanakan alur kerja Anda dan meningkatkan produktivitas.

  

Support and Learning Resources

  
  

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