Friday 1 December 2017

रन लंबाई संपीड़न बाइनरी विकल्प


हां वर्ण बताता है कि नव निर्मित एसएएस आउटपुट डेटा सेट में टिप्पणियां संकुचित (चर-लंबाई रिकॉर्ड) हैं। एसएएस अवलोकनों को संपीड़ित करने के लिए आरएलई (रन लांघ एन्कोडिंग) का उपयोग करता है यह संपीड़न एल्गोरिथ्म चरित्र डेटा के लिए बेहतर है। कोई निर्दिष्ट नहीं करता है कि नव निर्मित एसएएस डेटा सेट में टिप्पणियां असंपीड़ित (निश्चित अवधि के रिकॉर्ड) हैं BINARY निर्दिष्ट करता है कि एक नव निर्मित SAS आउटपुट डेटा सेट में टिप्पणियां संकुचित हैं। एसएएस इस सेटिंग के लिए आरडीसी (रॉस डाटा संपीड़न) का उपयोग करता है। यह विधि मध्यम से बड़े (कई सौ बाइट या बड़ा) द्विआधारी डेटा (जो कि, संख्यात्मक वैरिएबल) के ब्लॉक को संपीड़ित करने के लिए अत्यधिक प्रभावी है। क्योंकि संपीड़न फ़ंक्शन एक समय में एक रिकॉर्ड पर काम करता है, इसलिए रिकॉर्ड लंबाई को प्रभावी संपीड़न के लिए कई सौ बाइट या बड़ा होना चाहिए। केवल आउटपुट डेटा सेट के लिए COMPRESS निर्दिष्ट करें, अर्थात डेटा सेट DATA स्टेप के डेटा स्टेटमेंट या एसएएस प्रक्रिया के आउट विकल्प में निर्दिष्ट है। रिकॉर्ड प्रकार डेटा सेट का एक स्थायी विशेषता बन जाता है। टिप्पणियों को असम्परोड करने के लिए, डेटा सेट की प्रतिलिपि बनाने के लिए डेटा चरण का उपयोग करें और नए डेटा सेट के लिए COMPRESSNO का उपयोग करें। जब कॉम्प्रेसेचर्स, एसएएस रन-लम्बाई एन्कोडिंग के साथ सेट डेटा के आकार को संपीड़ित करता है रन-लम्बाई एन्कोडिंग दो बार या तीन-बाइट अभ्यावेदन में बार-बार लगातार अक्षरों को कम करके डेटा सेट को संपीड़ित करता है। जब COMPRESSBINARY, एसएएस संपीड़न डेटा सेट को सम्मिलित करने के लिए रन-लम्बाई एन्कोडिंग और स्लाइडिंग-विंडो संपीड़न को जोड़ती है। अपनी संपीड़न विधि निर्दिष्ट करने के लिए SASToolkit का उपयोग करें नोट: अवलोकन के संपीड़न सभी इंजनों द्वारा समर्थित नहीं है। संस्करण 8 में, एसएएस के पिछले संस्करणों में उपलब्ध इंजन के साथ सेट डेटा सेट, जैसे कि टेप और एक्सप्रेज इंजन, अभी भी उन इंजनों द्वारा एक्सेस किए जाते हैं इसलिए, अगर उन इंजनों के लिए संपीड़न उपलब्ध नहीं था, तो यह संस्करण 8 में उन डेटा सेटों तक पहुंचने पर भी उपलब्ध नहीं है। COMPRESS डेटा सेट विकल्प का उपयोग करके प्राप्त फायदे: डेटा के लिए संग्रहण आवश्यकताओं को कम करना कम इनपुट और आउटपुट ऑपरेशन आवश्यक प्रसंस्करण के दौरान डेटा सेट को पढ़ने या लिखने के लिए। COMPRESS डेटा सेट विकल्प का उपयोग करने के नुकसान में शामिल हैं: पूरी तरह से संपीड़ित नहीं हो सकता (वास्तव में फ़ाइल को बड़ा बना सकते हैं), लेकिन संपीड़न की मात्रा का ब्योरा प्रदान किया गया संदेश अधिक CPU संसाधनों की आवश्यकता है। डिफ़ॉल्ट रूप से, नए अवलोकनों को मौजूदा संपीड़ित डेटा सेटों के साथ जोड़ दिया गया है। यदि आप निशुल्क स्थान को ट्रैक और पुन: उपयोग करना चाहते हैं, तो जब आप एक संपीड़ित एसएएस डेटा सेट बनाते हैं तो रीयूस डेटा सेट विकल्प का उपयोग करें। रिज़्यूएस एसएएस को नए अवलोकनों को उस अंतरिक्ष में लिखने के लिए कहता है, जब आप अन्य टिप्पणियों को हटा देते हैं। COMPRESS डेटा सेट विकल्प COMPRESS सिस्टम विकल्प को ओवरराइड करता है निष्पादन नोट: इस विकल्प का उपयोग रिकॉर्ड को असम्पीडिंग के ओवरहेड की वजह से डेटा सेट पढ़ने के लिए CPU का समय बढ़ाता है। इसके अलावा, कुछ इंजन अवलोकन के सम्पीडन का समर्थन नहीं करते हैं कॉम्प्रेसेज और रियूज विकल्प सेटिंग का उपयोग करते समय, टिप्पणियों को अवलोकन संख्या से संबोधित नहीं किया जा सकता। ध्यान दें कि REUSEYES अंक से अधिक प्राथमिकता लेता है उदाहरण के लिए: POINTOBSNO वाले डेटा सेट में परिणाम क्योंकि जब आप संपीड़न का उपयोग करते हैं तो डिबॉल्ट डिफ़ॉल्ट होता है, REUSEYES POINTOBS को नं। में बदलने का कारण बनता है। मेरे पास वेब फॉर्म है, जिसके लिए मैं बेस64 में एक छोटी प्रस्तुति उत्पन्न करना चाहूंगा। अन्य चीजों के अलावा, 264 बाइनरी मानों की सूची है, जिनमें से अधिक से अधिक भाग किसी एक समय में 0 होने जा रहे हैं। (वे एक भौगोलिक नक्शे पर क्षेत्रों का प्रतिनिधित्व करते हैं)। यहां तक ​​कि बेस64 में, यह 264-बीट संख्या एक लंबी, डरा देता स्ट्रिंग उत्पन्न करती है। मैं रन-लम्बी एन्कोडिंग को कार्यान्वित करना चाहता हूं, जितनी संभवतः कुशलता से। क्या आप मुझे इस द्विआधारी आरएलई के साथ मदद कर सकते हैं, लेकिन कुछ भी उपयोग नहीं हुआ है Ive ने अब तक चलने वाले RLE को दशमलव की संख्याओं का उपयोग करके द्विआधारी स्ट्रिंग पर और ए को विभाजक के रूप में 0 और 1 के बीच में बदलाव को चिह्नित करने की कोशिश की, फिर परिणाम 11 से बेस 64 पर परिवर्तित किया। उदाहरण के लिए: जो बदले में इसका बेहतर हो जाता है, लेकिन मैं अभी भी मदद नहीं कर सकता, लेकिन संदेह करता हूं कि क्या मैं कुछ गलत कर रहा हूं - अंक ए को विभाजक के रूप में प्रयोग कर रहा है ऐसा करने के लिए धन्यवाद आने का सबसे अच्छा तरीका है। मैंने कुछ अधिक संकुचित स्ट्रिंग को छोटा कर दिया है। जैसा कि मैंने इसे टिप्पणियों में वर्णित किया है, वास्तविक उपयोग के मामलों में आमतौर पर एक भी कम स्ट्रिंग हो जाएगी। चूंकि आप बिट्स कोडिंग कर रहे हैं, आप शायद एक बाइट-आधारित एक के बजाय बिट-आधारित RLE का उपयोग करना चाहते हैं। इस संदर्भ में, आपको एलियास गामा कोडिंग (या इसके कुछ प्रकार) पर विचार करना चाहिए ताकि आपकी रन लंबाई कुशलता से सांकेतिक शब्दों में बदल सकें। आपके एन्कोडिंग प्रारूप के लिए एक उचित पहले सन्निकटन हो सकता है: असंपीड़ित स्ट्रिंग (प्रारंभिक ध्रुवीय को सेट करने के लिए) के पहले बिट के समान बिट्स: एलियास ने लगातार बिट रनों की लंबाई वाली कोडित लंबाई (1 और 0 बारीक) के बाद से आपको पता है कि कितने बिट्स आपकी असंपीड स्ट्रिंग में हैं, आपको एक समाप्ति कोड की आवश्यकता नहीं है, आप मनमाना बिट्स के रूप में किसी भी आवश्यक बाइनरी पैडिंग को जोड़ सकते हैं। ध्यान दें कि रन-लम्बाई संपीड़न के लिए हमेशा संभव है यदि आप इसके बारे में चिंतित हैं, तो आप यह इंगित करने के लिए एक अन्य प्रारंभिक बिट जोड़ सकते हैं कि क्या आपका डेटा संकुचित या असम्पीडित प्रारूप में है, अपने संपीड़न ओवरहेड को 1 बिट तक सीमित करें। हमें एक फ़ाइल या एक स्रोत संदेश दिया गया है जिसमें बहुत अधिक अनावश्यक वर्ण हैं उदाहरण के लिए, एक औसत एमएस वर्ड फ़ाइल में बहुत अधिक लगातार बाइट -255 और नल वर्ण हैं। क्या ये लगातार बाइट्स का प्रतिनिधित्व करना संभव है या अधिक कॉम्पैक्ट रूप में चलाता है। दरअसल, इस विशेष समस्या को हल करने के लिए एक संपीड़न तकनीक तैयार की गई थी। इसे रन-लांबल एन्कोडिंग या आरएलई कहा जाता है। इसका नाम इतना सटीक रूप से प्रक्रिया का वर्णन करता है क्योंकि यह निम्नलिखित बाइट के बाइट के एक रन को एनकोड करता है: लम्बाई, लंबाई के साथ एक बाइट के रनों की संख्या का प्रतिनिधित्व करता है और जिसका अर्थ है कि हम लगातार 255 लगातार रनों को सांकेतिक शब्दों में बदल सकते हैं। यह तकनीक रन-लम्बाई एन्कोडिंग तकनीकों में सबसे सरल है। एक उदाहरण के रूप में, निम्नलिखित डेटा स्रोत या 24 अक्षरों की स्ट्रिंग पर विचार करें: इनपुट स्ट्रिंग। abbbbbbbbbbfffgggghhijk उपरोक्त स्ट्रिंग एन्कोड करने के लिए, आउटपुट,,,,,,, और होगा। इस स्रोत के लिए कुल संपीड़ित प्रपत्र केवल 18 बाइट्स है। यह हमें सटीक 6 बाइट्स को 25 की एक संपीड़न अनुपात के साथ बचाता है। तकनीकी तौर पर, एक बेहतर लंबाई बाइट का मतलब कितना अधिक प्रकार है, ताकि हम वास्तव में अधिकतम 256 बाइट्स में रिकॉर्ड कर सकें: बाइट फ्लैग और संभावित 255 रन। इस प्रकार, पत्र एक के बजाय एन्कोड किया जाएगा इस तरह के आरएलई के एक दोष यह है कि यदि केवल सांकेतिक शब्दों में बदलना करने के लिए एक एकल बाइट है, तो आपको लंबाई बाइट के लिए एक अतिरिक्त बाइट जोड़ना होगा, जैसे पिछली उदाहरण में जब हमने अक्षरों को ए और ई एन्कोड किया था। यह मानना ​​अच्छा है कि इन रनों वाले डेटा स्रोत के कुछ निश्चित भाग हैं यद्यपि हम केवल एक बाइट के केवल 256 रनों को सांकेतिक शब्दों में बदल सकते थे, लगातार बाइट 256 से ज्यादा बार-बार कई फाइलों में नहीं होते हैं जो कि पर्याप्त अनावश्यक अक्षर या बाइट्स वाले फाइलों के लिए पूरी तरह से काम करता है। हम लंबाई तकनीक को सिर्फ 4 बिट तक सीमित करके इस तकनीक को सुधार सकते हैं। इस व्यवस्था के साथ, हम केवल एक बाइट के अधिकतम 16 रन को सांकेतिक शब्दों में बदल सकते हैं, जो साधारण संपीड़न के लिए पर्याप्त है क्योंकि वास्तविक फाइल में आमतौर पर बहुत सारे अनावश्यक बाइट्स नहीं होते हैं। पाठ फ़ाइलें बाइट-लम्बी पद्धति को सुधारने का एक तरीका टेक्स्ट-फ़ाइल संपीड़न के क्षेत्र में है। पाठ की प्रकृति (एएससीआईआई) फाइलों को देखते हुए जिसमें व्यक्तिगत बाइट को वास्तव में केवल 7 बिट (यानी बिट -7, या 8 वी बिट, किसी पाठ फ़ाइल में सभी बाइट्स के 0 में) में एन्कोड किया जा सकता है, इसलिए हम बिट - 7 को डिकोडर के लिए एक संकेत के रूप में यदि एक बाइट दोहराया गया है या नहीं यदि एक बाइट का चलना है, तो हम बाइट बिट -7 से 1 सेट कर देंगे। यदि डिकोडर 127 से अधिक है तो बाइट देखता है, इसका केवल मतलब है कि बाइट्स का एक रन है और डिकोडर तुरंत लिखा जाएगा बाइट्स की संख्या बाइनरी फ़ाइलें रन-लम्बाई एन्कोडिंग का एक अन्य चालाक रूप सांकेतिक शब्दों में बदलना है यदि और केवल अगर रन हो। यही है, एकल गैर-अनावश्यक बाइट के लिए एक अतिरिक्त बाइट को सांकेतिक शब्दों में बदलना न करें: केवल उन अनावश्यक बाइट्स को सांकेतिक शब्दों में बदलना यह दो बार एन्कोडिंग द्वारा बाइट द्वारा किया जाता है और फिर लंबाई बाइट एन्कोडिंग: लंबाई इस तरह, हम उन बाइट्स के लिए एक लंबाई बाइट नहीं लेते हैं जो केवल एक डेटा स्ट्रीम में स्वतंत्र रूप से होते हैं। इस प्रकार, decompression चरण में, एक जुड़वा बाइट की उपस्थिति हमें चेतावनी देता है कि वास्तव में बाइट्स की एक रन है। इसलिए, इसका मतलब है कि बाइट बी के 10 रन हैं। यह इस प्रकार है कि हम दो के बाद अगले आठ बाइट लिखना चाहिए। पिछले उदाहरण को इस तरह एन्कोड किया जाएगा: इस एन्कोडिंग को आउटपुट के लिए केवल 17 बाइट्स की आवश्यकता है। ध्यान दें कि पत्र ए और ई अब एन्कोडेड हैं, जैसे एकल बाइट्स के साथ। बहुत बड़ी फ़ाइलों के लिए, यह तकनीक बाइट-लम्बी तकनीक की तुलना में अधिक शक्तिशाली है। यह विधि अधिकतम 257 लगातार बाइट्स (2 (0..255) पर रिकॉर्ड कर सकता है। हालांकि, इस नई तकनीक से हमें एक और दोष दिया गया है, हालांकि, अतिरिक्त प्रतीक एन्कोडेड है। यदि एक प्रतीक के केवल दो रन हैं, तो हमें एक अतिरिक्त बाइट की आवश्यकता होगी, केवल दो बाइट्स की बजाय तीन बाइट्स के साथ रन एन्कोडिंग की आवश्यकता होगी। सामान्य तौर पर, हालांकि, यह अधिक प्रभावी होता है जब हम डेटा को एक बड़ी फ़ाइल के रूप में देखते हैं, जो स्वाभाविक रूप से समान बाइट्स की एक श्रृंखला हो सकती है। RLE. ZIP - पाठ और बाइनरी फ़ाइलों के लिए रन-लम्बाई एन्कोडिंग के सी कार्यान्वयन शामिल हैं। STOIMEN039s वेब लॉग कंप्यूटर एल्गोरिदम: रन-लम्बाई एन्कोडिंग के साथ डेटा संपीड़न परिचय कोई फर्क नहीं पड़ता कि आजकल कितनी तेजी से कंप्यूटर और नेटवर्क हैं, उपयोगकर्ताओं को लगातार तेज़ और तेज़ आवश्यकता होगी सेवाएं। स्थानांतरित डेटा की मात्रा को कम करने के लिए हम आम तौर पर कुछ प्रकार की संपीड़न का उपयोग करते हैं। यही कारण है कि इस कंप्यूटर विज्ञान क्षेत्र में हमेशा शोध और विकास के लिए दिलचस्प होगा। कई डेटा संपीड़न एल्गोरिदम हैं, उनमें से कुछ दोषरहित हैं, अन्य हानिपूर्ण हैं, लेकिन उनका मुख्य लक्ष्य भंडारण स्थान और यातायात को अतिरिक्त करना होगा। इन एल्गोरिदम बहुत ही उपयोगी होते हैं, जब दो दूर के स्थानों के बीच डेटा ट्रांसफर के बारे में बात करते हैं। शायद सबसे अच्छा उदाहरण वेब सर्वर और एक ब्राउज़र के बीच अंतरण है पिछले कुछ सालों में क्लाइंट साइड पर निष्पादित फाइलों को संपीड़ित करने पर बहुत सारे शोध किया गया है। ऐसी फाइलें जावास्क्रिप्ट, सीएसएस, एचटीएमएल और छवियां हैं। वास्तव में सर्वर और ग्राहकों को पहले से ही डेटा को सम्मिलित करने के लिए कुछ तकनीकें हैं, उदाहरण के लिए जीज़आईएपी का उपयोग करना, जो हस्तांतरण को नाटकीय रूप से कम कर सकता है दूसरी तरफ, डेटा के आकार को कम करने के लिए बहुत सारे उपकरण और चाल होते हैं। वास्तव में जब कोई ग्राहक क्लाइंट 8217 वर्चुअल मशीन द्वारा निष्पादित किया जाता है, तो यह इस बात को ध्यान में रखता है कि 8220beautifully8221 को प्रोग्रामर 8217 के दृष्टिकोण से स्वरूपित किया जाता है। इस प्रकार रिक्त स्थान, टैब्स और नई लाइनें डोने 8217 में पर्यावरण के लिए कोई महत्वपूर्ण जानकारी लाती हैं। यही कारण है कि इस तरह के संपीड़न उपकरण जैसे यूयूआई कंप्रेसर Google क्लोजर कंपाइलर आदि। उन प्रतीकों को हटा दें ठीक है, वे संपीड़न दर को बेहतर बनाने के लिए और भी हासिल कर सकते हैं। इस पोस्ट में मुझे 8217 वें कवर मिला, लेकिन यह दर्शाता है कि डेटा कम्प्रेशन एल्गोरिदम कितनी महत्वपूर्ण हैं। यह बहुत अच्छा होगा अगर हम कुछ उपकरण के साथ डेटा को संक्षिप्त कर सकते। दुर्भाग्य से यह मामला नहीं है और आम तौर पर संपीड़न दर डेटा पर निर्भर करता है। यह स्पष्ट है कि डेटा संपीड़न एल्गोरिथ का चुनाव मुख्य रूप से डेटा पर निर्भर करता है और सबसे पहले हमें डेटा का पता लगाने चाहिए। यहाँ I8217ll एक बहुत ही सरल दोषरहित डेटा संपीड़न एल्गोरिथ्म 8220run-length एन्कोडिंग 8221 कहा जाता है जो कुछ मामलों में बहुत उपयोगी हो सकता है। इस एल्गोरिथम में इस डेटा के केवल एक आइटम के साथ दोहराए जाने वाले डेटा के बड़े अनुक्रमों को बदलकर शामिल किया गया है, यह दर्शाता है कि यह आइटम कितनी बार दोहराया गया है। स्पष्ट होने के लिए एक स्ट्रिंग उदाहरण देखें। पोस्ट नेविगेशन

No comments:

Post a Comment