क्या कोई भी Data.Text
और Data.ByteString.Char8
डेटा प्रकारों का उपयोग करने के लिए पेशेवरों और विपक्ष को समझा सकता है? क्या ASCII-only टेक्स्ट के साथ काम करना इन पेशेवरों और विपक्ष को बदलता है? क्या उनके आलसी रूपों ने कहानी भी बदल दी है?डेटा। टेक्स्ट बनाम डेटा.बेटस्ट्रिंग। चेर 8
उत्तर
Data.ByteString.Char8
, 8-बिट ASCII वर्ण के दृश्यों के रूप में ByteString
मूल्यों के इलाज के लिए कार्य प्रदान करता है, जबकि Data.Text
एक स्वतंत्र प्रकार यूनिकोड की सम्पूर्णता का समर्थन है।
ByteString
और Text
अनिवार्य रूप से वही हैं, जहां तक प्रतिनिधित्व होता है - सख्त हिस्सों की सूचियों के आधार पर आलसी रूपों के साथ सख्त, अनबॉक्स किए गए सरणी। मुख्य अंतर यह है कि ByteString
स्टोर ऑक्टेट्स (यानी Word8
एस), जबकि Text
स्टोर Char
एस, यूटीएफ -16 में एन्कोड किया गया है।
यदि आप ASCII-only टेक्स्ट के साथ काम कर रहे हैं, तो Data.ByteString.Char8
का उपयोग Text
से अधिक तेज़ होगा, और कम स्मृति का उपयोग करें; हालांकि, आपको खुद से पूछना चाहिए कि क्या आप वास्तव में सुनिश्चित हैं कि आप केवल ASCII के साथ काम करने जा रहे हैं। असल में, 99% मामलों में Data.ByteString.Char8
Text
से अधिक गति हैक - ऑक्टेट्स वर्ण नहीं हैं, और कोई भी हास्केलर इस बात से सहमत हो सकता है कि सही प्रकार का उपयोग कच्चे, नंगे धातु की गति पर प्राथमिकता दी जानी चाहिए। आपको आमतौर पर केवल इस पर विचार करना चाहिए यदि आपने प्रोग्राम का प्रोफाइल किया है और यह एक बाधा है। Text
अच्छी तरह से अनुकूलित है, और अंतर ज्यादातर मामलों में शायद नगण्य होगा।
बेशक, गैर-गति से संबंधित स्थितियां हैं जिनमें Data.ByteString.Char8
जरूरी है। डेटा वाली फ़ाइल पर विचार करें जो अनिवार्य रूप से बाइनरी है, पाठ नहीं, लेकिन रेखाओं में विभाजित है; lines
का उपयोग कर पूरी तरह से उचित है। इसके अतिरिक्त, यह पूरी तरह से कल्पना योग्य है कि एक पूर्णांक को बाइनरी प्रारूप के संदर्भ में ASCII दशमलव में एन्कोड किया जा सकता है; readInt
का उपयोग करके उस मामले में सही अर्थ होगा।
तो, मूल रूप से:
Data.ByteString.Char8
: जहां प्रदर्शन सर्वोपरि है, और "लगभग-बाइनरी" डेटा कुछ ASCII घटक हैं कि संभाल करने के लिए शुद्ध ASCII स्थितियों के लिए।Data.Text
: सहित स्थिति जहां टेक्स्ट एएससीआईआई के अलावा किसी अन्य चीज की थोड़ी सी संभावना है।
- 1. utf-8 बनाम लैटिन 1
- 2. ओरेकल, पीडीओ_ओसीआई बनाम ओसीआई 8
- 3. वैल्यू() बनाम टेक्स्ट() textarea
- 4. एचटीपी अनुरोध - आईएमजी बनाम टेक्स्ट?
- 5. आईई 8 getJSON कैश डेटा
- 6. 'डेटा: टेक्स्ट/सादा' यूआरएल
- 7. टेक्स्ट रेन्डरर। बिटमैप बनाम बिटपैप बनाम ऑनपेंटबैकग्राउंड
- 8. यूटीएफ -8 बनाम लैटिन 1 mysql, यूटीएफ -8
- 9. विंडोज 8 एक्सएएमएल मल्टी-कॉलम टेक्स्ट
- 10. टैब 8 डेटा के लिए विन 8 मेट्रो कंस्ट्रक्चरिंग कॉलम
- 11. WPF टेक्स्ट लपेटें बनाम WrapWithOverflow
- 12. साइबेस टेक्स्ट बनाम ओरेकल सीएलओबी प्रदर्शन
- 13. बूस्ट सीरियलाइजेशन प्रदर्शन: टेक्स्ट बनाम बाइनरी प्रारूप
- 14. डेटा ग्रिड बनाम GridView
- 15. स्ट्रिंग c_str() बनाम डेटा()
- 16. डेटा टेम्पलेट बनाम ItemContainerStyle
- 17. डेटा प्रकार बनाम UiHint
- 18. पायथन idastar बनाम अस्थिर हल 8 पहेली
- 19. आईएसओ -885 9 -1 बनाम यूटीएफ -8?
- 20. एक यूटीएफ -8 बनाम सीपीपी केस
- 21. विंडोज फोन 8 GeoCoordinateWatcher बनाम जिओलोकेटर
- 22. टेक्स्ट.प्रिंटफ डेटा के साथ। टेक्स्ट?
- 23. टेक्स्ट फ़ाइल का मेटा डेटा
- 24. यूटीएफ -8 टेक्स्ट को गड़बड़ कर दिया जाता है जब फॉर्म मल्टीपार्ट/फॉर्म-डेटा
- 25. MySQL लैटिन 1 डेटा को यूटीएफ 8
- 26. यूटीएफ -8 डेटा के लिए सर्वश्रेष्ठ प्रकार?
- 27. क्यों नेट टेक्स्टबॉक्स में टेक्स्ट लम्बाई बनाम टेक्स्ट। लम्बाई है?
- 28. डेटा सत्यापन बनाम डेटा सत्यापन बनाम जेएसओएन स्कीमा बनाम इनपुट सत्यापन
- 29. लगातार बनाम अपरिवर्तनीय डेटा संरचना
- 30. UIImagePickerControllerOriginalImage बनाम मूल संपत्ति डेटा
मैं गारंटी दे सकता हूं कि केवल ASCII-केवल पाठ होगा, क्योंकि मेरा प्रोग्राम बहुत विशिष्ट कंप्यूटर जेनरेट की गई सी फाइलों को संसाधित करता है। मैं किसी भी मामले में दोनों कोशिश करूँगा। –
मैं शायद 'Data.ByteString.Char8' के लिए जाऊंगा, क्योंकि आप अनिवार्य रूप से एक बाइनरी प्रारूप से निपटेंगे जो केवल * पाठ जैसा दिखता है। (मैं फ़ाइलों को पार्स करने के लिए [attoparsec] (http://hackage.haskell.org/package/attoparsec) की जांच करने की भी सिफारिश करता हूं।) – ehird
आप यह भी उल्लेख करते हैं कि यूटीएफ -16 के रूप में टेक्स्ट एन्कोड और ऑक्टेट के रूप में बाइटस्ट्रिंग। क्या यह सामान्य रूप से स्मृति उपयोग को प्रभावित करता है? मेरा आवेदन एक कोड पुनरावर्तक है, और जैसा कि यह है, यह स्मृति की भारी मात्रा का उपयोग करता है जिसे मैं स्ट्रिंग का उपयोग करने के लिए पता लगा सकता हूं। मैं पहले से ही अपने तारों को प्रशिक्षित करता हूं, इसलिए किसी भी सुधार का स्वागत किया जाएगा। यही कारण है कि मैं डेटा प्रकार बदलना चाहता हूँ। –