11 पॉइंट द्वारा xguru 2021-03-16 | 4 टिप्पणियां | WhatsApp पर शेयर करें
  • Python के tarfile फ़ंक्शन से बनी फ़ाइल की तुलना में macOS tar से बनी फ़ाइल 15 गुना बड़ी निकली

  • कारण: BSD/GNU tar compressed file के अंदर फ़ाइलों ko बिना किसी क्रम के रखता है, इसलिए फ़ाइलों के प्रकार के आधार पर compression ratio कम हो सकता है

→ Python का tarfile फ़ंक्शन डिफ़ॉल्ट रूप से sort करता है

  • GNU tar में --sort विकल्प के साथ name/inode क्रम में sort करके जोड़ना संभव है → sort लागू करने पर वही compression ratio मिलता है

4 टिप्पणियां

 
deadcat 2021-03-16

मुझे थोड़ा समझ नहीं आ रहा, लेकिन sorting लागू करने से compression ratio क्यों बदल जाता है? हर individual file का compression ratio तो एक जैसा ही होगा।

 
dalinaum 2021-03-22

जो algorithm इस्तेमाल हो रहा है, वह Deflate है। यह पहले compression में इस्तेमाल की गई सामग्री को sliding window में रखता है। अगर इस बार 10 bytes प्रोसेस किए गए हैं, तो अभी प्रोसेस किए गए 10 bytes sliding window के आखिर में जुड़ जाते हैं, और sliding window का size fixed रहता है.

अगर sliding window में मौजूद सामग्री जैसा ही कोई हिस्सा मिल जाता है, तो उसे compression के लिए LLD (Literal, Length, Distance) लिखकर दर्शाया जाता है। Distance बताता है कि sliding window में किस जगह से वही सामग्री शुरू होती है, Length बताता है कि sliding window में वही सामग्री कितनी लंबी है, और Literal वह पहला अक्षर है जो समान नहीं है.

Deflate में यह महत्वपूर्ण है कि sliding window में क्या रखा है, इसलिए यह मायने रखता है कि क्या ठीक पहले मिलती-जुलती सामग्री देखी गई थी। अगर पहले कोई similar file देखी गई हो, तो compression बेहतर होने की संभावना बढ़ जाती है.

 
dalinaum 2021-03-22

यह किस तरीके से compress होता है, इसके लिए नीचे की स्लाइड्स देखें। (gzip भी Deflate-आधारित है.)

https://speakerdeck.com/dalinaum/…

 
xguru 2021-03-16

एक ही फ़ोल्डर के भीतर समान या मिलते-जुलते नाम वाली फ़ाइलों की सामग्री भी अक्सर मिलती-जुलती होती है, इसलिए compression ratio ज़्यादा अच्छा हो सकता है,

और लगता है कि बात यह है कि compress करते समय ऐसी समान चीज़ों को खोजने की सीमा बहुत व्यापक नहीं होती, इसलिए अगर फ़ाइलों को sort कर दिया जाए तो ऐसी मिलती-जुलती फ़ाइलें पास आ जाती हैं और उनके साथ compress होने की संभावना बढ़ जाती है।