Přehled
Zatímco většina kompresních algoritmů byla původně navržena pro jednojádrové procesory, vícejádrová éra nabízí značný potenciál pro zrychlení. Aspose.ZIP toho využívá tím, že poskytuje vícejádrovou optimalizaci pro určité archivní formáty.Paralelní archivy BZIP2, LZIP a XZ
Paralelizace je povolena pro určité formáty archivů kvůli jejich přirozené blokové povaze. Aspose.ZIP toho využívá tím, že na programové úrovni používá běžný vícejádrový kompresní přístup. Uživatelé mohou ovládat počet vláken použitých pro kompresi pomocí metody setCompressionThreads(int) . Když je tato hodnota nastavena na větší než jedna, bude pro rychlejší kompresi použito více jader 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");
}
V příkladu 1 je ukázáno vytvoření archivu Bzip2 pomocí třídy Bzip2Archive. Nejprve určíme zdrojový soubor, který se má komprimovat, pomocí metody archive.setSource("data.bin"). Dále lze pomocí objektu Bzip2SaveOptions konfigurovat různé možnosti komprese, včetně počtu toků komprese. Nakonec se archiv uloží se zadanými možnostmi pomocí metody archive.save("archive.bz2", options).
Ve druhém příkladu nakonfigurujeme parametry komprese pro formát xz před vytvořením archivu. Tato konfigurace se provádí pomocí objektu XzArchiveSettings, kde zadáme požadovaný počet kompresních streamů. Poté se vytvoří nový archiv XzArchive s těmito nastaveními předanými jako argument. Poté je zdrojový soubor ("data.bin") nastaven jako zdroj pro kompresi a archiv je uložen pomocí metody archive.save("archive.xz").
Ve třetím příkladu demonstrujeme vytvoření archivu LZ pomocí objektu LzipArchiveSettings. Nejprve nastavíme velikost slovníku používaného kompresí LZMA. Dále nastavíme počet vláken na 4. Poté vytvoříme objekt LzipArchive a předáme konstruktoru objekt LzipArchiveSettings. Nakonec určíme soubor k archivaci a archiv uložíme.
Komprese LZMA2 a vícevláknové zpracování v archivech 7Z
Jedna z metod komprese ve formátu 7z, LZMA2 , podporuje vícevláknovou kompresi. Podobně jako u předchozích archivních formátů můžete pomocí metody setCompressionThreads(int) ovládat počet vláken.
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");
}
- Nastavení komprese: Začneme vytvořením nastavení komprese pomocí objektu SevenZipLZMA2CompressionSettings. V tomto příkladu je počet kompresních toků nastaven na 4.
- Nastavení položky: Dále je vytvořen objekt SevenZipEntrySettings a přiřazena nastavení komprese, která jsme definovali dříve. Tento krok nakonfiguruje kompresi pro každý jednotlivý záznam v archivu.
- Vytvoření archivu: Se všemi nastaveními vytvoříme objekt SevenZipArchive a předáme mu nastavení záznamu. Tento archiv bude obsahovat jednu položku s názvem "first.bin", která odpovídá zdrojovému souboru "data.bin".
- Uložení archivu: Nakonec se vytvořený archiv uloží jako "result.7z" pomocí metody save("result.7z").
Zrychlete archivaci ZIP pomocí paralelní komprese
Paralelizace pro rychlejší zpracování byla implementována na úrovni bloku nebo algoritmu pro předchozí archivní formáty v Aspose.ZIP. Archivy ZIP však nabízejí jedinečnou výhodu: základní paralelizaci při ukládání. Chcete-li to povolit, vytvořte při ukládání archivu ZIP instanci objektu 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);
}
Tento kód využívá paralelní kompresi k optimalizaci vytváření archivů a vytváří archiv ZIP s názvem "archive.zip" ze všech souborů ve složce "C:\Data".
Další podporované funkce Aspose.ZIP pro Java API
S knihovnou Aspose.ZIP v Javě můžete bez problémů zvládnout různé úkoly související s dokumenty souborů ZIP. Ať už potřebujete převádět formáty, slučovat soubory, upravovat obsah nebo extrahovat data, Aspose.ZIP poskytuje komplexní funkce pro zefektivnění vašeho pracovního postupu a zvýšení produktivity.
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