सिंहावलोकन

अधिकांश संपीड़न एल्गोरिदम सिंगल-कोर प्रोसेसर के लिए डिज़ाइन किए गए थे। हालाँकि, मल्टी-कोर सीपीयू के युग में, संग्रह निर्माण में तेजी लाने के लिए अपने सभी सीपीयू कोर का उपयोग करना फायदेमंद है। Aspose.ZIP कुछ संग्रह प्रारूपों के लिए यह क्षमता प्रदान करता है।

BZIP2, LZIP और XZ अभिलेखागार पर समानांतर विधियाँ

इन एल्गोरिदम की ब्लॉक प्रकृति के कारण समानांतरीकरण संभव है। प्रोग्राम स्तर पर ये अभिलेखागार मल्टी-कोर संपीड़न के सामान्य दृष्टिकोण का उपयोग करते हैं। उपयोगकर्ता CompressionThreads प्रॉपर्टी के माध्यम से थ्रेड्स की संख्या निर्धारित कर सकता है। इसलिए यदि यह गुण एक से अधिक है तो कई सीपीयू कोर का उपयोग किया जाएगा।

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

.NET के साथ किसी फोल्डर को ज़िप कैसे करें

ज़िप अभिलेखागार एक या एकाधिक फ़ाइलों या फ़ोल्डरों को एक एकीकृत कंटेनर में संपीड़ित और समेकित करने के उद्देश्य से कार्य करता है। .NET में, आप ज़िप फ़ाइलों और संपीड़न के साथ काम करने के लिए ZipFile क्लास का उपयोग कर सकते हैं। संग्रह करने का प्राथमिक उद्देश्य आम तौर पर भंडारण या ट्रांसमिशन के लिए फ़ाइल का आकार कम करना है, जबकि बढ़ी हुई सुरक्षा के लिए एन्क्रिप्शन उपायों को भी शामिल करना है। पारंपरिक फ़ाइल संपीड़न उपकरणों से परे, स्वचालित संपीड़न/निष्कर्षण सुविधाएँ विविध डेस्कटॉप और वेब अनुप्रयोगों में अनुप्रयोग ढूंढती हैं, जिससे फ़ाइलों को अपलोड करने, डाउनलोड करने, साझा करने या एन्क्रिप्ट करने जैसे कार्यों की सुविधा मिलती है।

7Z LZMA2 पुरालेख

7Z प्रारूप संपीड़न विधियों में से एक LZMA2 है, जिसे कई थ्रेड्स में संपीड़ित किया जा सकता है। पिछले प्रकार के अभिलेखों की तरह ही आप CompressionThreads प्रॉपर्टी के माध्यम से थ्रेड्स की संख्या निर्धारित कर सकते हैं।

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

ज़िप अभिलेखागार पर समानांतर विधि

पिछली संग्रह कक्षाओं के लिए समानांतरीकरण या तो ब्लॉक या एल्गोरिदम स्तर पर लागू किया गया था। ज़िप संग्रह के लिए यह प्रवेश स्तर पर संभव है। ऐसा करने के लिए आर्काइव सेविंग पर तुरंत ParallelOptions चालू करें।

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

पैरेलल-कंप्रेस-इन-मेमोरी सेटअप रणनीति का उपयोग मल्टीटास्क के लिए किया जाता है

ParallelCompressInMemory सेट करना उस रणनीति को इंगित करता है जिसे हम मल्टीटास्क के लिए चुनते हैं। यहां तीन विकल्प हैं:
ParallelCompressionMode.Never: सभी प्रविष्टियों का संपीड़न अनुक्रमिक है. केवल एक सीपीयू कोर कंप्रेशन पर काम करता है और कंप्रेस्ड डेटा आते ही उसे फ्लश कर देता है।
ParallelCompressionMode.Always: यह प्रविष्टि आकार, उपलब्ध मेमोरी और अन्य कारकों की परवाह किए बिना विभिन्न थ्रेड्स में प्रविष्टियों के संपीड़न को बाध्य करता है। प्रत्येक सीपीयू कोर एक साथ एक फ़ाइल को संपीड़ित करता है और उसके संपीड़ित डेटा को रैम में रखता है। प्रविष्टि संपीड़ित होने पर यह परिणाम स्ट्रीम में प्रवाहित हो जाती है। यदि आपकी RAM मात्रा छोटी है और कुछ N प्रविष्टियों (जहाँ N CPU कोर की संख्या है) का कुल आकार बहुत बड़ा है, तो ऐसा हो सकता है कि CLR के लिए उपलब्ध सभी RAM समाप्त हो जाएगी और OutOfMemoryExcepton उत्पन्न हो जाएगी।
ParallelCompressionMode.Auto: यह सीपीयू कोर, प्रविष्टियों के आकार, उपलब्ध मेमोरी का अनुमान लगाता है और चुनता है कि प्रविष्टियों को समानांतर या क्रमिक रूप से संपीड़ित करना है या नहीं। इस मोड में कुछ छोटी प्रविष्टियों को समानांतर में संपीड़ित किया जाना है जबकि अन्य को क्रमिक रूप से। उच्च मेमोरी खपत के कारण LZMA और PPMd प्रविष्टियाँ समानांतर में संपीड़ित नहीं होती हैं। आम तौर पर, इस विकल्प के साथ जाना सुरक्षित है; Aspose.ZIP अनुमानों से सावधान रहता है और फ़ॉलबैक के रूप में अनुक्रमिक संपीड़न पर स्विच करता है। इस मोड के लिए पैरेललऑप्शंस की एक और संपत्ति है - अवेलेबलमेमोरीसाइज। यह किसी अन्य विधा के लिए व्यर्थ है. मोटे तौर पर, यह मेगाबाइट में सभी सीपीयू कोर के साथ प्रविष्टियों को संपीड़ित करते समय आवंटित मेमोरी की उच्च सीमा है। Aspose.ZIP उस संख्या का उपयोग प्रविष्टि के सबसे बड़े आकार का अनुमान लगाने के लिए करता है जिसे समानांतर में संपीड़ित करना सुरक्षित है। सीमा से ऊपर की प्रविष्टियों को क्रमिक रूप से संपीड़ित किया जाना चाहिए। AvailableMemorySize एक दोधारी तलवार है: बड़ी प्रविष्टियों के साथ बहुत अधिक ऊंचाई पर सेट होने के कारण, यह रैम की कमी पैदा कर सकता है, तीव्र अदला-बदली, और यहां तक ​​कि स्मृति अपवाद से बाहर भी हो सकता है। बहुत कम सेट होने के कारण, अधिकांश प्रविष्टियाँ बिना अधिक गति के क्रमिक तरीके से संपीड़ित हो जाएंगी। इसलिए, परिष्कृत उपयोगकर्ता इसे ट्रेड-ऑफ़ पर विचार करके असाइन कर सकते हैं।
हम आपको अपने विशिष्ट डेटा पर समानांतर संपीड़न के विभिन्न तरीकों के साथ खेलने के लिए प्रोत्साहित करते हैं ताकि यह निर्धारित किया जा सके कि आपके मामले में सबसे अच्छी सेटिंग्स क्या हैं।

.NET API सुविधाओं के लिए अन्य समर्थित Aspose.ZIP

कनवर्ट करने, मर्ज करने, ज़िप-फ़ाइल दस्तावेज़ों को संपादित करने, संग्रह से डेटा निकालने और बहुत कुछ करने के लिए Aspose.ZIP C# लाइब्रेरी का उपयोग करें!

  

Support and Learning Resources

  
  

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