ภาพรวม

แม้ว่าอัลกอริธึมการบีบอัดส่วนใหญ่ได้รับการออกแบบมาสำหรับโปรเซสเซอร์แบบ single-core แต่ในยุค multi-core มีศักยภาพที่สำคัญในการเร่งความเร็ว Aspose.ZIP ใช้ประโยชน์จากสิ่งนี้โดยการเพิ่มประสิทธิภาพแบบมัลติคอร์สำหรับรูปแบบไฟล์เก็บถาวรบางรูปแบบ

การเก็บถาวร BZIP2, LZIP และ XZ แบบขนาน

การเปิดใช้งานการทำให้ขนานกันสำหรับรูปแบบไฟล์เก็บถาวรบางรูปแบบเนื่องจากลักษณะการบล็อกโดยธรรมชาติ Aspose.ZIP ใช้ประโยชน์จากสิ่งนี้โดยใช้วิธีการบีบอัดแบบมัลติคอร์ทั่วไปในระดับโปรแกรม ผู้ใช้สามารถควบคุมจำนวนเธรดที่ใช้ในการบีบอัดผ่านเมธอด setCompressionThreads(int) เมื่อค่านี้ถูกตั้งค่าเป็นมากกว่าหนึ่ง 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 สาธิตการสร้างไฟล์เก็บถาวร Bzip2 โดยใช้คลาส Bzip2Archive ขั้นแรก เราระบุไฟล์ต้นฉบับที่จะบีบอัดโดยใช้เมธอด archive.setSource("data.bin") ถัดไป คุณสามารถกำหนดค่าตัวเลือกการบีบอัดต่างๆ รวมถึงจำนวนสตรีมการบีบอัดได้โดยใช้ออบเจ็กต์ Bzip2SaveOptions สุดท้าย ไฟล์เก็บถาวรจะถูกบันทึกด้วยตัวเลือกที่ระบุโดยใช้เมธอด archive.save("archive.bz2", options)
ในตัวอย่างที่สอง เรากำหนดค่าพารามิเตอร์การบีบอัดสำหรับรูปแบบ xz ก่อนที่จะสร้างไฟล์เก็บถาวร การกำหนดค่านี้เสร็จสิ้นโดยใช้วัตถุ XzArchiveSettings โดยที่เราระบุจำนวนสตรีมการบีบอัดที่ต้องการ จากนั้น XzArchive ใหม่จะถูกสร้างขึ้นโดยการตั้งค่าเหล่านี้จะถูกส่งผ่านเป็นอาร์กิวเมนต์ หลังจากนั้น ไฟล์ต้นฉบับ ("data.bin") จะถูกตั้งค่าเป็นแหล่งสำหรับการบีบอัด และไฟล์เก็บถาวรจะถูกบันทึกโดยใช้เมธอด archive.save("archive.xz")
ในตัวอย่างที่สาม เราสาธิตการสร้างไฟล์เก็บถาวร LZ โดยใช้อ็อบเจ็กต์ LzipArchiveSettings ขั้นแรก เรากำหนดขนาดของพจนานุกรมที่ใช้โดยการบีบอัด LZMA ต่อไป เราตั้งค่าจำนวนเธรดเป็น 4 หลังจากนั้น เราสร้างวัตถุ LzipArchive และส่งผ่านวัตถุ LzipArchiveSettings ไปยังตัวสร้าง สุดท้ายนี้ เราระบุไฟล์ที่จะเก็บถาวรและบันทึกไฟล์เก็บถาวร

การบีบอัด LZMA2 และมัลติเธรดในไฟล์เก็บถาวร 7Z

หนึ่งในวิธีการบีบอัดภายในรูปแบบ 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 และส่งต่อการตั้งค่ารายการไปให้ ไฟล์เก็บถาวรนี้จะมีรายการเดียวชื่อ "first.bin" ซึ่งสอดคล้องกับไฟล์ต้นฉบับ "data.bin"
  • การบันทึกไฟล์เก็บถาวร: สุดท้าย ไฟล์เก็บถาวรที่สร้างขึ้นจะถูกบันทึก เป็น "result.7z" โดยใช้เมธอด save("result.7z")

เร่งความเร็วการเก็บ ZIP ด้วยการบีบอัดแบบขนาน

การปรับเทียบกันเพื่อการประมวลผลที่เร็วขึ้นได้ถูกนำมาใช้ในระดับบล็อกหรืออัลกอริธึมสำหรับรูปแบบไฟล์เก็บถาวรก่อนหน้าใน Aspose.ZIP อย่างไรก็ตาม ไฟล์ ZIP มีข้อได้เปรียบที่ไม่เหมือนใคร: การทำงานแบบขนานระดับเริ่มต้นระหว่างการบันทึก หากต้องการเปิดใช้งาน ให้สร้างอินสแตนซ์ออบเจ็กต์ ParallelOptions เมื่อบันทึกไฟล์ 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);
    } 

โค้ดนี้ใช้การบีบอัดแบบขนานเพื่อเพิ่มประสิทธิภาพการสร้างไฟล์เก็บถาวร และสร้างไฟล์ ZIP ชื่อ "archive.zip" จากไฟล์ทั้งหมดภายในโฟลเดอร์ "C:\Data"

Aspose.ZIP อื่นๆ ที่รองรับสำหรับคุณสมบัติ Java API

ด้วยไลบรารี Aspose.ZIP ใน Java คุณสามารถจัดการงานต่างๆ ที่เกี่ยวข้องกับเอกสารไฟล์ ZIP ได้อย่างราบรื่น ไม่ว่าคุณจะต้องการแปลงรูปแบบ รวมไฟล์ แก้ไขเนื้อหา หรือแยกข้อมูล Aspose.ZIP มีฟังก์ชันการทำงานที่ครอบคลุมเพื่อปรับปรุงขั้นตอนการทำงานของคุณและปรับปรุงประสิทธิภาพการทำงาน

  

Support and Learning Resources

  
  

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