दोनों पार्सिंग (धारावाहिक, deserializing) और नेटवर्क पर पैकेट भेजने के मामले में बाइनरी और एक्सएमएल serialization के बीच प्रदर्शन अंतर का कोई अच्छा अनुमान है?क्या बाइनरी और एक्सएमएल क्रमबद्धता के बीच कोई परफॉर्मेंस अंतर है?
उत्तर
नहीं।
यह इस बात पर निर्भर करता है कि XML दस्तावेज़ के अंदर किस प्रकार का डेटा है। यदि आपके पास बहुत अधिक संरचित डेटा है, तो एक्सएमएल के लिए ओवरहेड बड़ा होगा। उदाहरण के लिए, अपने डेटा लग रहा है, तो जैसे:
<book name="bible">
In the beginning God created the heavens and the earth.
Now the earth was formless and empty ...
And if any man shall take away from the words of the book of this prophecy, God shall take away his part out of the book of life, and out of the holy city, and from the things which are written in this book. He which testifieth these things saith, Surely I come quickly. Amen. Even so, come, Lord Jesus.
</book>
तो यह वास्तव में एक निष्पक्ष सवाल है:
<person>
<name>Dave</dave>
<ssn>000-00-0000</ssn>
<email1>xxxxxx/email1>
</person>
...
यदि आप एक XML दस्तावेज है कि लगता है कि राशि की तुलना में बहुत अधिक भूमि के ऊपर होगा। यह उस डेटा पर निर्भर करता है जिस पर आप भेजना चाहते हैं, और कैसे/यदि आप इसे संपीड़ित कर रहे हैं।
सहजता से आप यह कहना चाहते हैं कि बाइनरी अधिक कुशल है, लेकिन यह वास्तव में धारावाहिक डेटा पर निर्भर करता है। इस लेख को
की जांच: http://www.nablasoft.com/alkampfer/index.php/2008/10/31/binary-versus-xml-serialization-size/
बस ओर इशारा करते हुए प्रदर्शन केवल मीट्रिक को देखने के लिए चाहते हो सकता है नहीं है।
- निर्माण की आसानी। क्या आपके पास एक धारावाहिक/deserialiser दिनचर्या बनाने के लिए कई दिन/सप्ताह हैं और इसे पूरी तरह से परीक्षण करें या उस समय सुविधाओं पर बेहतर खर्च किया जा सकता है।
- डेटा का उपभोग करने में आसानी। क्या कोई क्लाइंट प्री-बिल्ट ओपन-सोर्स पार्सर का उपयोग कर सकता है या क्या उन्हें स्वयं (संभावित रूप से छोटी गाड़ी) कोड का एक समूह लागू करने की आवश्यकता है?
- डिबगिंग की आसानी। डीबग करने के लिए पारगमन सहायता में डेटा देखने में सक्षम हो जाएगा? फिर एक बाइनरी प्रारूप किसी भी मुद्दे को खराब कर देगा।
- प्रत्येक विधि के लिए रखरखाव लागत क्या है?
व्यक्तिगत रूप से, मैं एक प्रकाशित XML मानक और ओपन सोर्स पार्सिंग लाइब्रेरी का उपयोग करता हूं जब तक कि प्रदर्शन की बाधा वास्तविक परीक्षण द्वारा साबित न हो जाए।
BinaryFormatter
और एक्सएमएल क्रमबद्धता के बीच सबसे बड़ा अंतर पोर्टेबिलिटी है; बाइनरीफॉर्मेटर को संस्करणों के बीच गारंटी देना मुश्किल है, इसलिए शॉर्टरम स्टोरेज या ट्रांसफर के लिए केवल वास्तव में उपयुक्त है।
हालांकि, अगर आप दोनों का सबसे अच्छा प्राप्त कर सकते हैं, और यह है छोटे और, यह तेज है bespoke द्विआधारी क्रमांकन का उपयोग करके - और तुम भी यह अपने आप ;-p करने के लिए
की जरूरत नहीं हैprotobuf-net Google के प्रोटोकॉल बफर बाइनरी सीरियलाइजेशन spec का .NET कार्यान्वयन है; यह XmlSerializer
या BinaryFormatter
, से पूरी तरह से पोर्टेबल (केवल संस्करणों के बीच नहीं - आप एक पीबी स्ट्रीम लोड कर सकते हैं, उदाहरण के लिए, जावा, आदि), एक्स्टेंसिबल और तेज़ से छोटा है। उपयोगकर्ताओं की एक उचित संख्या के साथ, यह भी व्यापक रूप से परीक्षण किया जाता है।
आकार और गति, XmlSerializer
, BinaryFormatter
, DataContractSerializer
को कवर करने और Protobuf शुद्ध की एक पूरी टूटने here है।
चूंकि यह सी # है, पहले से ही एक्सएमएल और बाइनरी सीरियलाइज़र हैं जो ओपी का उपयोग कर सकते हैं जो पूरी तरह से परीक्षण और काम कर रहे हैं। –