Áttekintés

A legtöbb tömörítési algoritmust egymagos processzorokhoz tervezték. A többmagos CPU-k korában azonban előnyös az összes CPU-magot felhasználni az archívum létrehozásának felgyorsítására. Az Aspose.ZIP biztosítja ezt a lehetőséget bizonyos archív formátumokhoz.

Párhuzamos módszerek a BZIP2, LZIP és XZ archívumokban

A párhuzamosítás lehetséges ezen algoritmusok blokk jellege miatt. Program szinten ezek az archívumok a többmagos tömörítés közös megközelítését használják. A felhasználó beállíthatja a szálak számát a CompressionThreads tulajdonságon keresztül. Tehát ha ez a tulajdonság egynél több, akkor több CPU-mag kerül felhasználásra.

Sample 1 – Parallel compression to BZIP2

    using (Bzip2Archive archive = new Bzip2Archive())
    {
        archive.SetSource("data.bin");
        archive.Save("archive.bz2", new Bzip2SaveOptions() { CompressionThreads = 4 });
    }

Sample 2 - Parallel compression to LZIP

    var settings = new LzipArchiveSettings(16777216) { CompressionThreads = 4 }
    using (LzipArchive archive = new LzipArchive(settings))
    {
        archive.SetSource("data.bin");
        archive.Save("archive.lz");
    }

Sample 3 - Parallel compression to XZ

    using (Bzip2Archive archive = new Bzip2Archive())
    {
        archive.SetSource("data.bin");
        archive.Save("archive.bz2", new Bzip2SaveOptions() { CompressionThreads = 4 });
    }

Mappa tömörítése .NET segítségével

A ZIP archívumok arra szolgálnak, hogy egy vagy több fájlt vagy mappát tömörítsenek és egységes tárolóba tömörítsenek. A .NET fájlban a ZipFile osztály használható ZIP fájlokkal és tömörítéssel való munkához. Az archiválás elsődleges célja jellemzően a tárolás vagy átvitel fájlméretének csökkentése, valamint a fokozott biztonság érdekében titkosítási intézkedések beépítése. A hagyományos fájltömörítő eszközökön túl az automatikus tömörítési/kibontási funkciók különféle asztali és webes alkalmazásokban is alkalmazhatók, megkönnyítve az olyan feladatokat, mint a fájlok feltöltése, letöltése, megosztása vagy titkosítása.

7Z LZMA2 archívum

A 7Z formátumú tömörítési módszerek egyike az LZMA2 , amely több szálban is tömöríthető. A korábbi archívumtípusokhoz hasonlóan a CompressionThreads tulajdonságon keresztül beállíthatja a szálak számát.

Sample 1 – Parallel compression to 7Z LZMA2

    var settings = new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(){ CompressionThreads = 4 });
    using (SevenZipArchive archive = new SevenZipArchive(settings))
    {
        archive.CreateEntry("first.bin", "data.bin");
        archive.Save("result.7z");
    }

Párhuzamos módszer ZIP-archívumokban

A korábbi archív osztályoknál a párhuzamosítást blokk- vagy algoritmus szinten alkalmaztuk. A ZIP archívum számára belépő szinten lehetséges. Ehhez példányosítsa a ParallelOptions archiválási mentést.

Sample 1 – Parallel compression to zip

    using (Archive archive = new Archive())
    {
        archive.CreateEntries(@"C:\Data");
        archive.Save(zipFile, new ArchiveSaveOptions()
        {
            ParallelOptions = new ParallelOptions() 
            { ParallelCompressInMemory = ParallelCompressionMode.Auto }
        });
    }

A párhuzamos tömörítés a memóriában beállítási stratégiát többfeladatos feladatok elvégzésére használják

A ParallelCompressInMemory beállítása jelzi a többfeladatos munkavégzéshez választott stratégiát. Íme három opció :
ParallelCompressionMode.Never: az összes bejegyzés tömörítése szekvenciális. Csak egy CPU mag működik a tömörítésen, és kiüríti a tömörített adatokat, ahogy jönnek.
ParallelCompressionMode.Always: A különböző szálakban lévő bejegyzések tömörítését kényszeríti ki, függetlenül a bejegyzés méretétől, a rendelkezésre álló memóriától és egyéb tényezőktől. Minden CPU mag egyidejűleg tömörít egy fájlt, és a tömörített adatokat a RAM-ban tartja. A bejegyzés tömörítésekor az eredményáramhoz öblít. Ha a RAM mennyisége kicsi, és néhány N bejegyzés teljes mérete (ahol N a CPU magok száma) hatalmas, előfordulhat, hogy a CLR számára rendelkezésre álló RAM kimerül, és OutOfMemoryExcepton keletkezik.
ParallelCompressionMode.Auto: Megbecsüli a CPU magokat, a bejegyzések méretét, a rendelkezésre álló memóriát, és kiválasztja, hogy párhuzamosan vagy szekvenciálisan tömörítse-e a bejegyzéseket. Ebben a módban néhány kisebb bejegyzést párhuzamosan, míg másokat szekvenciálisan kell tömöríteni. Az LZMA és a PPMd bejegyzések nincsenek párhuzamosan tömörítve a nagy memóriafelhasználás miatt. Általában ez a lehetőség biztonságos; Az Aspose.ZIP óvatos a becslésekkel, és tartalékként szekvenciális tömörítésre vált. A ParallelOptions még egy tulajdonsága van ehhez a módhoz - AvailableMemorySize. Semmi más mód számára értelmetlen. Nagyjából ez a lefoglalt memória felső határa az összes CPU maggal való bejegyzések tömörítésekor, megabájtban. Az Aspose.ZIP ezt a számot használja a bejegyzés legnagyobb méretének becslésére, amely párhuzamosan biztonságosan tömöríthető. A küszöbérték feletti bejegyzések egymás után tömörítendők. Az AvailableMemorySize kétélű fegyver: túl magasra állítva hatalmas bejegyzésekkel, kimerítheti a RAM-ot, intenzív csere, és még az is előfordulhat, hogy kifogyott a memória. Ha túl alacsonyra van állítva, a bejegyzések nagy része szekvenciálisan tömörítésre kerül anélkül, hogy nagy sebességgel haladnának. Így a kifinomult felhasználók kompromisszum alapján hozzárendelhetik.
Azt javasoljuk, hogy játsszon a különböző párhuzamos tömörítési módokkal a tipikus adatokon, hogy meghatározza, melyek a legjobb beállítások az Ön esetében.

Egyéb támogatott Aspose.ZIP a .NET API-hoz

Használja az Aspose.ZIP C# könyvtárat a zip-fájlok konvertálásához, egyesítéséhez, szerkesztéséhez, adatok kinyeréséhez az archívumból és még sok máshoz!

  

Support and Learning Resources

  
  

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