Übersicht
Während die meisten Komprimierungsalgorithmen ursprünglich für Single-Core-Prozessoren entwickelt wurden, bietet die Multi-Core-Ära ein erhebliches Potenzial für eine Beschleunigung. Aspose.ZIP macht sich dies zunutze, indem es eine Multi-Core-Optimierung für bestimmte Archivformate bietet.Parallelisierung von BZIP2-, LZIP- und XZ-Archiven
Die Parallelisierung ist für bestimmte Archivformate aufgrund ihrer inhärenten blockbasierten Natur aktiviert. Aspose.ZIP macht sich dies zunutze, indem es auf Programmebene einen gemeinsamen Multi-Core-Komprimierungsansatz einsetzt. Benutzer können die Anzahl der für die Komprimierung verwendeten Threads über die Methode setCompressionThreads(int) steuern. Wenn dieser Wert auf mehr als eins eingestellt ist, werden mehrere CPU-Kerne für eine schnellere Komprimierung verwendet.
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");
}
Im Beispiel 1 wird das Erstellen eines Bzip2-Archivs mithilfe der Bzip2Archive-Klasse demonstriert. Zuerst geben wir die zu komprimierende Quelldatei mit der Methode archive.setSource(“data.bin”) an. Als nächstes können verschiedene Komprimierungsoptionen, einschließlich der Anzahl der Komprimierungsstreams, mithilfe des Bzip2SaveOptions-Objekts konfiguriert werden. Abschließend wird das Archiv mit der Methode archive.save(“archive.bz2”, Optionen) mit den angegebenen Optionen gespeichert.
Im zweiten Beispiel konfigurieren wir die Komprimierungsparameter für das xz-Format, bevor wir das Archiv erstellen. Diese Konfiguration erfolgt mithilfe des XzArchiveSettings-Objekts, in dem wir die gewünschte Anzahl von Komprimierungsstreams angeben. Anschließend wird ein neues XzArchive erstellt, wobei diese Einstellungen als Argument übergeben werden. Anschließend wird die Quelldatei („data.bin“) als Quelle für die Komprimierung festgelegt und das Archiv mit der Methode archive.save(„archive.xz“) gespeichert.
Im dritten Beispiel demonstrieren wir die Erstellung eines LZ-Archivs mithilfe des LzipArchiveSettings-Objekts. Zuerst legen wir die Größe des von der LZMA-Komprimierung verwendeten Wörterbuchs fest. Als nächstes setzen wir die Anzahl der Threads auf 4. Danach erstellen wir ein LzipArchive-Objekt und übergeben das LzipArchiveSettings-Objekt an den Konstruktor. Abschließend geben wir die zu archivierende Datei an und speichern das Archiv.
LZMA2-Komprimierung und Multithreading in 7Z-Archiven
Eine der Komprimierungsmethoden im 7z-Format, LZMA2 , unterstützt Multithread-Komprimierung. Ähnlich wie bei früheren Archivformaten können Sie die Anzahl der verwendeten Threads mit der Methode setCompressionThreads(int) steuern.
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");
}
- Komprimierungseinstellungen: Wir beginnen mit der Erstellung von Komprimierungseinstellungen mithilfe des SevenZipLZMA2CompressionSettings-Objekts. In diesem Beispiel ist die Anzahl der Komprimierungsstreams auf 4 festgelegt.
- Eintragseinstellungen: Als Nächstes wird ein SevenZipEntrySettings-Objekt erstellt und ihm die zuvor definierten Komprimierungseinstellungen zugewiesen. In diesem Schritt wird die Komprimierung für jeden einzelnen Datensatz im Archiv konfiguriert.
- Erstellen des Archivs: Nachdem alle Einstellungen vorgenommen wurden, erstellen wir ein SevenZipArchive-Objekt und übergeben ihm die Eintragseinstellungen. Dieses Archiv enthält einen einzelnen Eintrag mit dem Namen „first.bin“, der der Quelldatei „data.bin“ entspricht.
- Speichern des Archivs: Abschließend wird das erstellte Archiv gespeichert als „result.7z“ mit der Methode save(„result.7z“).
Beschleunigen Sie die ZIP-Archivierung durch parallele Komprimierung
Für frühere Archivformate wurde in Aspose.ZIP eine Parallelisierung für eine schnellere Verarbeitung auf Block- oder Algorithmusebene implementiert. ZIP-Archive bieten jedoch einen einzigartigen Vorteil: Parallelisierung auf Einstiegsniveau beim Speichern. Um dies zu aktivieren, instanziieren Sie beim Speichern des ZIP-Archivs ein ParallelOptions -Objekt.
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);
}
Dieser Code nutzt parallele Komprimierung, um die Archiverstellung zu optimieren, und erstellt aus allen Dateien im Ordner „C:\Data“ ein ZIP-Archiv mit dem Namen „archive.zip“.
Weitere unterstützte Aspose.ZIP für Java-API-Funktionen
Mit der Aspose.ZIP-Bibliothek in Java können Sie verschiedene Aufgaben im Zusammenhang mit ZIP-Dateidokumenten nahtlos erledigen. Unabhängig davon, ob Sie Formate konvertieren, Dateien zusammenführen, Inhalte bearbeiten oder Daten extrahieren müssen, bietet Aspose.ZIP umfassende Funktionen, um Ihren Arbeitsablauf zu optimieren und die Produktivität zu steigern.
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