Á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
- Learning Resources
- Documentation
- Source Code
- API References
- Tutorial Videos
- Product Support
- Free Support
- Paid Support
- Blog
- Release Notes
- Why Aspose.ZIP for .NET?
- Customers List
- Success Stories