7za में बहुपरत समर्थन


19

(मैंने इसे पहले सर्वरफॉल्ट पर पोस्ट किया था, लेकिन तब मुझे महसूस हुआ कि यह शायद यहीं का है।)

मैं 7za (p7zip) 9.20 का उपयोग करके एक बहुत बड़ी पाठ फ़ाइल को संपीड़ित करने की कोशिश कर रहा हूं। -एमएमटी विकल्प का कोई प्रभाव नहीं दिखता है। मैंने दोनों की कोशिश की है -एमटी = पर और -एमटी = 2। यह एक 8-कोर मशीन है। एक व्यक्ति ने तर्क के रूप में -m0 = lzma2 को जोड़ने का सुझाव दिया, लेकिन वह मुझे E_INVALIDARG देता है। क्या किसी को पता है कि यह काम कैसे करना है?

इसका कोई प्रभाव नहीं है:

7za a -mx=9 -mmt=2 -p myarchive.zip bigfile.txt

और यह एक त्रुटि के साथ विफल होता है:

7za a -m0=lzma2 -mx=9 -mmt=2 -p myarchive.zip bigfile.txt


7-Zip (A) [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,8 CPUs)
Scanning

Creating archive release_20120601-1-http.zip



System error:
E_INVALIDARG

मेरा मानना ​​है कि विकल्प बस है -mmt, नहीं -mmt=2। इसके अलावा, मेरा मानना ​​है कि उचित वाक्यविन्यास है -mx9, हालांकि दोनों काम कर सकते हैं।
ब्रेकथ्रू

धन्यवाद, लेकिन एक विकल्प के बिना मिमी अभी भी केवल एक धागे का उपयोग करता है। Docs.bugaco.com/7zip/MANUAL/switches/method.htm#ZipMultiThread के अनुसार , आप -mt = N के साथ उपयोग करने के लिए थ्रेड्स की संख्या निर्दिष्ट कर सकते हैं।
ब्रायन एल

मैं अभी भी LZMA / Deflate का उपयोग करने की सिफारिश करूंगा, भले ही यह केवल थ्रेडेड हो। हालांकि आपको BZip2 के साथ एक बढ़ी हुई संपीड़न गति मिल सकती है , सादे पाठ को संपीड़ित करते समय यह कम कुशल है , और एकल-थ्रेडेड वेरिएंट LZMA / Deflate समकक्षों की तुलना में धीमी हैं।
निर्णायक

@ संक्षिप्त: BZip2 आमतौर पर DEFLATE से बेहतर संपीड़न प्राप्त करता है, जैसा कि आपके लिंक में दिखाया गया है। यह बहुत अधिक है, LZMA की तुलना में बहुत तेज है (जब संपीड़ित हो रहा है)।
डेनिस

जवाबों:


25

-M (सेट कम्प्रेशन मेथड) के अनुसार # ZipMultiThread - 7ZIP मैनुअल और डॉक्यूमेंटेशन , mtडिफॉल्ट को स्विच करें on, इसलिए इसे निर्दिष्ट करने की कोई आवश्यकता नहीं है।

हालाँकि, DEFLATE एल्गोरिथम का 7zip का कार्यान्वयन मल्टी-थ्रेडिंग का समर्थन नहीं करता है!

जैसा कि आप पहले ही खोज चुके हैं,

7za a archive.zip bigfile

केवल एक कोर का उपयोग करता है।

लेकिन .zipफाइलें हर फाइल को व्यक्तिगत रूप से संपीड़ित करती हैं। कई फ़ाइलों को संपीड़ित करते समय, बहु-थ्रेडिंग विकल्प एक बार में एक फ़ाइल प्रति कोर को संपीड़ित करता है।

यह कोशिश करो और आप देखेंगे कि

7za a archive.zip bigfile1 ... bigfileN

सभी उपलब्ध Nकोर का उपयोग करेगा ।

यदि आप किसी एकल फ़ाइल के संपीड़न को गति देना चाहते हैं , तो आपके पास दो विकल्प हैं:

  1. अलग bigfileमात्रा में।

  2. एक अलग संपीड़न एल्गोरिथ्म का उपयोग करें।

    उदाहरण के लिए, 7zip का BZip2 एल्गोरिथ्म का कार्यान्वयन मल्टी-थ्रेडिंग का समर्थन करता है।

    वाक्य रचना है:

    7za a -mm=BZip2 archive.zip bigfile
    

इसके अलावा, सिंटैक्स त्रुटि .zipकंटेनर के लिए LZM एल्गोरिथ्म का उपयोग करने के आपके प्रयास के कारण होती है । यह संभव नहीं है।

.zipConatiners के लिए संभावित एल्गोरिदम DEFLATE (64), BZip2 और कोई संपीड़न नहीं हैं।

यदि आप LZM एल्गोरिथ्म का उपयोग करना चाहते हैं, तो .7zकंटेनर का उपयोग करें । इस कंटेनर में निम्नलिखित एल्गोरिदम भी हैं: PPMd, BZip2, DEFLATE, BCJ, BCJ2 और कोई संपीड़न नहीं।


@ डेनिस ने सोचा कि ओपी LZMA (2) का उपयोग कर रहा था, जो प्रलेखन से, "LZMA संपीड़न केवल 2 धागे का उपयोग करता है।" यद्यपि मैं सहमत हूं, सहज रूप से (जिस तरह से लेम्पेल-ज़िव एन्कोडिंग काम करता है) के कारण, LZMA या डिफ्लेट को गुणा करना बहुत मुश्किल होगा (जो हफ़मैन एन्कोडिंग के साथ सिर्फ LZMA है)।
निर्णायक

1
@ संक्षिप्त: पहले, तो मैंने किया था (मेरे उत्तर के संशोधनों की जांच करें।) यही वाक्यविन्यास त्रुटि के बारे में था। आप .zipकंटेनर के साथ LZMA संपीड़न का उपयोग नहीं कर सकते ।
डेनिस

@ डेनिस आह, कि ऊपर समाशोधन के लिए धन्यवाद। नहीं देखा कि ओपी एक .ZIPकंटेनर का उपयोग कर रहा था ।
ब्रेकथ्रू

रुको, तो मुझे एक अलग परिणाम मिलेगा यदि मैं कंटेनर के फ़ाइल एक्सटेंशन को .7z में बदल दूं?
ब्रायन एल

3
@BranL वहाँ एक "धन्यवाद" बटन बनाया गया है। यह ऊपर की तरफ एक तीर की तरह दिखता है;)
nhinkle

5

यह एक पुराना प्रश्न है, और विशिष्ट प्रश्न का उत्तर नहीं है, लेकिन प्रश्न की भावना का उत्तर है (ज़िप प्रारूप को संपीड़ित करने के लिए सभी कोर का उपयोग करके)

पिगज़ (समानांतर ज़िप के साथ। ज़िप विकल्प)

pigz -K -k archive.zip bigfile txt

यह आपको समान कंप्रेशन लेवल के लिए 7 गुना तेजी से जिप कम्पेटिबल फाइल देगा।

सिंगल और मल्टीपल कोर का उपयोग करके जिप संगत और नॉन-जिप कंप्रेशर्स की एक त्वरित तुलना।

फेडोरा 20 पर 1.0gb txt फ़ाइल को संपीड़ित करने के लिए i7-2600k पर दीवार बार

67s (120mb) 7za (zip,1 thread)
15s (141mb) 7za -mx=4 (zip,1 thread)
17s (132mb) zip (zip,1 thread)
 5s (131mb) pigz -K -k (zip,8 threads)
 9s (106mb) bsc (libbsc.com) (not zip,8 threads)
 5s (130mb) zhuff -c2 (not zip,8 threads)
 2s (149mb) zhuff (not zip,8 threads)

डेकोमप्रेस करने के लिए दीवार बार

4.2s unzip -t
2.0s pigz -t
5.1s bsc d
0.5s zhuff -d

जब आप pbzip2 या pixz कर सकते हैं तो पिग क्यों?
हिला

gzip bzip2 की तुलना में बहुत तेज़ है, इसलिए अतिरिक्त संपीड़न हमेशा इसके लायक नहीं होता है।
jesjimher

0

बस उपयोग-एमटीटी [एन + 1]

उदाहरण के लिए: -एमएमटी 2 एक धागे के लिए है, -एमएमटी 9 आठ धागों के लिए है


-1

सत्यापित और परीक्षण किया गया: 7za पर मल्टीथ्रेडिंग का उपयोग करने के लिए पैरामीटर "-mmt" "नहीं" -mmt = # "होना चाहिए, समान चिह्न लगाने से इसे अनदेखा किया जा सकता है।

मैंने कैसे खोजा था? बिना किसी पैरामीटर के मैं 7z चलाने के बाद यह मापदंडों के बारे में जानकारी दिखाता है, स्विच पर यह "-एमटीटी [एन]" कहता है, न कि "-एमएमटी = [एन]"

इसलिए अगर मैं अच्छी तरह से समझता हूं, तो आप जिस पैरामीटर को टाइप कर रहे हैं "-एमएमटी = 2" गलत लिखा जा सकता है और समान चिह्न के बिना "-एमएमटी 2" हो सकता है।

यकीन नहीं होता कि अगर मैं अच्छी तरह से समझता हूं, तो मेरी अंग्रेजी वास्तव में खराब है।

वैसे, आप केवल "7z" के बजाय "7za" का उपयोग क्यों करते हैं?

इसलिए पैरामीटर का परीक्षण करने के लिए मैं बेंचमार्क करने के लिए कमांड का एक सेट चलाता हूं और जो कुछ प्रलेखन पर टाइपो त्रुटि की पुष्टि करता है। बराबर चिह्न के बिना सही पैरामीटर टाइप किया जाना चाहिए।

केवल एक धागे के साथ 7z के साथ एक बेंचमार्क करने के लिए कमांड करें: 7z b -mmt1

केवल दो थ्रेड्स के साथ 7z के साथ एक बेंचमार्क करने के लिए कमांड करें: 7z b -mmt2

केवल दो थ्रेड्स के साथ 7za के साथ एक बेंचमार्क करने की आज्ञा दें: 7za b -mmt2

केवल एक धागे के साथ 7za के साथ एक बेंचमार्क करने के लिए कमांड करें: 7za b -mmt1

पैरामीटर ˋ-mmt # on पर कोई समान चिह्न नहीं है, न तो 7z के लिए, न ही 7za के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.