Przegląd

Chociaż większość algorytmów kompresji została pierwotnie zaprojektowana dla procesorów jednordzeniowych, era wielordzeniowych oferuje znaczny potencjał przyspieszenia. Aspose.ZIP wykorzystuje to, zapewniając wielordzeniową optymalizację dla niektórych formatów archiwów.

Równoległe archiwa BZIP2, LZIP i XZ

Równoległość jest włączona dla niektórych formatów archiwów ze względu na ich nieodłączną naturę blokową. Aspose.ZIP wykorzystuje to, stosując wspólne podejście do kompresji wielordzeniowej na poziomie programu. Użytkownicy mogą kontrolować liczbę wątków używanych do kompresji za pomocą metody setCompressionThreads(int) . Jeśli ta wartość jest większa niż jeden, do szybszej kompresji zostanie wykorzystanych wiele rdzeni procesora.

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

W przykładzie 1 zademonstrowano tworzenie archiwum Bzip2 przy użyciu klasy Bzip2Archive. Najpierw określamy plik źródłowy do skompresowania za pomocą metody Archive.setSource("data.bin"). Następnie za pomocą obiektu Bzip2SaveOptions można skonfigurować różne opcje kompresji, w tym liczbę strumieni kompresji. Na koniec archiwum jest zapisywane z określonymi opcjami przy użyciu metody Archive.save("archive.bz2", options).
W drugim przykładzie konfigurujemy parametry kompresji dla formatu xz przed utworzeniem archiwum. Konfiguracja ta odbywa się za pomocą obiektu XzArchiveSettings, w którym określamy żądaną liczbę strumieni kompresji. Następnie tworzony jest nowy plik XzArchive z tymi ustawieniami przekazanymi jako argument. Następnie plik źródłowy („data.bin”) jest ustawiany jako źródło kompresji, a archiwum jest zapisywane przy użyciu metody Archive.save(„archive.xz”).
W trzecim przykładzie demonstrujemy tworzenie archiwum LZ przy użyciu obiektu LzipArchiveSettings. Najpierw ustawiamy rozmiar słownika używanego przy kompresji LZMA. Następnie ustawiamy liczbę wątków na 4. Następnie tworzymy obiekt LzipArchive i przekazujemy obiekt LzipArchiveSettings do konstruktora. Na koniec określamy plik do archiwizacji i zapisujemy archiwum.

Kompresja LZMA2 i wielowątkowość w archiwach 7Z

Jedna z metod kompresji w formacie 7z, LZMA2 , obsługuje kompresję wielowątkową. Podobnie jak w przypadku poprzednich formatów archiwów, możesz kontrolować liczbę wątków używanych za pomocą metody 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");
    }
  • Ustawienia kompresji: zaczynamy od utworzenia ustawień kompresji przy użyciu obiektu SevenZipLZMA2CompressionSettings. W tym przykładzie liczba strumieni kompresji jest ustawiona na 4.
  • Ustawienia wpisu: Następnie tworzony jest obiekt SevenZipEntrySettings i przypisuje się mu zdefiniowane wcześniej ustawienia kompresji. Ten krok konfiguruje kompresję dla każdego pojedynczego rekordu w archiwum.
  • Tworzenie archiwum: Po wprowadzeniu wszystkich ustawień tworzymy obiekt SevenZipArchive i przekazujemy mu ustawienia wpisów. To archiwum będzie zawierać pojedynczy wpis o nazwie „first.bin”, który odpowiada plikowi źródłowemu „data.bin”.
  • Zapisywanie archiwum: Na koniec utworzone archiwum zostanie zapisane jako „result.7z” przy użyciu metody save(„result.7z”).

Przyspiesz archiwizację ZIP dzięki kompresji równoległej

Równoległość w celu szybszego przetwarzania została zaimplementowana na poziomie bloku lub algorytmu dla poprzednich formatów archiwów w Aspose.ZIP. Archiwa ZIP oferują jednak wyjątkową zaletę: równoległość na poziomie podstawowym podczas zapisywania. Aby to włączyć, podczas zapisywania archiwum ZIP utwórz instancję obiektu 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);
    } 

Ten kod wykorzystuje kompresję równoległą w celu optymalizacji tworzenia archiwum i tworzy archiwum ZIP o nazwie „archive.zip” ze wszystkich plików w folderze „C:\Data”.

Inne obsługiwane funkcje Aspose.ZIP dla Java API

Dzięki bibliotece Aspose.ZIP w Javie możesz bezproblemowo wykonywać różne zadania związane z dokumentami w formacie ZIP. Niezależnie od tego, czy potrzebujesz konwertować formaty, scalać pliki, edytować zawartość czy wyodrębniać dane, Aspose.ZIP zapewnia wszechstronną funkcjonalność usprawniającą przepływ pracy i zwiększającą produktywność.

  

Support and Learning Resources

  
  

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