इतनी कम संख्या में बिट्स के लिए, कई बिट्स को बचाने के लिए यह असंभव है क्योंकि ग्लोरफिंडेल ने बताया है । हालाँकि, यदि आप जिस डोमेन का उपयोग कर रहे हैं उसमें कुछ और बिट्स हैं, तो आप स्टार्ट वैल्यू और डेल्टा के साथ एन्कोडिंग रेंज द्वारा औसत केस के लिए महत्वपूर्ण बचत प्राप्त कर सकते हैं।
मान लें कि डोमेन पूर्णांक है, इसलिए 32 बिट्स हैं। भोली दृष्टिकोण के साथ, आपको एक सीमा को संग्रहीत करने के लिए 64 बिट्स (शुरू, अंत) की आवश्यकता होती है।
यदि हम (शुरू, डेल्टा) के एन्कोडिंग में जाते हैं, तो हम उस से सीमा के अंत का निर्माण कर सकते हैं। हम जानते हैं कि सबसे खराब स्थिति में, शुरुआत 0 है और डेल्टा में 32 बिट्स हैं।
2 ^ 5 32 है, इसलिए हम डेल्टा की लंबाई को पांच बिट्स (कोई शून्य लंबाई, हमेशा 1 जोड़ते हैं) में एन्कोड करते हैं, और एन्कोडिंग बन जाती है (प्रारंभ, लंबाई, डेल्टा)। सबसे खराब स्थिति में, यह 32 * 2 + 5 बिट्स है, इसलिए 69 बिट्स। तो सबसे खराब स्थिति में, यदि सभी रेंज लंबी हैं, तो यह खराब है तो भोली एन्कोडिंग है।
सबसे अच्छे मामले में, इसकी कीमत 32 + 5 + 1 = 38 बिट्स है।
इसका मतलब है कि यदि आपको बहुत सी रेंज को एनकोड करना है, और वे रेंज आपके डोमेन के केवल छोटे हिस्से को कवर करते हैं, तो आप इस एन्कोडिंग का उपयोग करके औसतन कम जगह का उपयोग करते हैं। इससे कोई फर्क नहीं पड़ता है कि प्रारंभ कैसे वितरित किए जाते हैं, क्योंकि प्रारंभ में हमेशा 32 बिट्स होंगे, लेकिन इससे कोई फर्क नहीं पड़ता कि रेंज की लंबाई कैसे वितरित की जाती है। यदि आपके पास अधिक छोटी लंबाई, बेहतर संपीड़न, आपके पास अधिक रेंज हैं जो डोमेन की पूरी लंबाई को कवर करती हैं, तो यह एन्कोडिंग जितना खराब होगा।
हालाँकि, यदि आपके पास समान प्रारंभ बिंदुओं के आसपास बहुत सी श्रेणियां हैं, (उदाहरण के लिए क्योंकि आपको सेंसर से मान मिलते हैं), तो आप बड़ी बचत प्राप्त कर सकते हैं। आप उसी तकनीक को स्टार्ट वैल्यू पर लागू कर सकते हैं और स्टार्ट वैल्यू को ऑफसेट करने के लिए पूर्वाग्रह का उपयोग कर सकते हैं।
कहते हैं कि आपके पास 10000 रेंज हैं। श्रेणियों को एक निश्चित मूल्य के आसपास समूहीकृत किया जाता है। आप 32 बिट्स के साथ पूर्वाग्रह को एनकोड करते हैं।
भोले दृष्टिकोण का उपयोग करके, आपको उन सभी श्रेणियों को संग्रहीत करने के लिए 32 * 2 * 10 000 = 640 000 बिट्स की आवश्यकता होगी।
पूर्वाग्रह को एन्कोडिंग करने में 32 बिट्स लगते हैं, और प्रत्येक श्रेणी को एन्कोडिंग सबसे अच्छा मामले में 5 + 1 + 5 + 1 = 12 बिट्स लेता है, कुल 120 000 + 32 = 120 032 बिट्स के लिए। सबसे खराब स्थिति में, आपको कुल 740 032 बिट्स के लिए 5 + 32 + 5 + 32 बिट्स की आवश्यकता होती है, इस प्रकार 74 बिट्स।
इसका मतलब है, एक डोमेन पर 10 000 मानों के लिए जो 32 बिट्स को एन्कोड करने के लिए लेता है, हमें मिलता है
- सबसे अच्छा मामले में स्मार्ट डेल्टा एन्कोडिंग के साथ 120 032 बिट्स
- भोली शुरुआत, अंत एन्कोडिंग, हमेशा (कोई सबसे अच्छा या सबसे बुरा मामला) के साथ 640 000 बिट्स
- सबसे खराब स्थिति में स्मार्ट डेल्टा एन्कोडिंग के साथ 740 032 बिट्स
अगर आप अनुभवहीन एनकोडिंग को आधार रेखा के रूप में लेते हैं, तो इसका मतलब है कि या तो 81.25% तक की बचत या 15.625% तक अधिक लागत।
आपके मूल्यों को कैसे वितरित किया जाता है, इसके आधार पर, वे बचत महत्वपूर्ण हैं। अपने व्यापार डोमेन को जानें! जानिए आप क्या एनकोड करना चाहते हैं।
विस्तार के रूप में, आप पूर्वाग्रह भी बदल सकते हैं। यदि आप डेटा का विश्लेषण करते हैं और मूल्यों के समूहों की पहचान करते हैं, तो आप डेटा को बाल्टियों में छाँट सकते हैं और प्रत्येक बाल्टी को अलग से अपने बायस के साथ एनकोड कर सकते हैं। इसका मतलब है कि आप इस तकनीक को न केवल उन श्रेणियों पर लागू कर सकते हैं, जिन्हें एक ही मूल्य के आसपास समूहीकृत किया गया है, बल्कि कई मानों के आसपास समूहीकृत की गई श्रेणियों के लिए भी।
यदि आपके प्रारंभ बिंदु समान रूप से वितरित किए जाते हैं, तो यह एन्कोडिंग वास्तव में अच्छी तरह से काम नहीं करती है।
यह एन्कोडिंग स्पष्ट रूप से सूचकांक के लिए बेहद खराब है। आप केवल x-th मान नहीं पढ़ सकते हैं। यह बहुत अधिक केवल क्रमिक रूप से पढ़ा जा सकता है। जो कुछ स्थितियों में उपयुक्त है, उदाहरण के लिए नेटवर्क या बल्क स्टोरेज पर स्ट्रीमिंग (जैसे टेप या एचडीडी पर)।
डेटा का मूल्यांकन, इसे समूहीकृत करना और सही पूर्वाग्रह चुनना काफी काम हो सकता है और इष्टतम परिणामों के लिए कुछ ठीक-ट्यूनिंग की आवश्यकता हो सकती है।