هل هناك أي اختلافات في السرعة بين تسلسل ثنائي و XML؟

StackOverflow https://stackoverflow.com/questions/394588

  •  23-08-2019
  •  | 
  •  

سؤال

فيما يتعلق بكل من التحليل (تسلسل، التحيز) وإرسال الحزم عبر الشبكة هل هناك أي تقدير جيد للاختلافات الأداء بين تسلسل الثنائي و XML؟

هل كانت مفيدة؟

المحلول

لا.

ذلك يعتمد بشكل كبير على أي نوع من البيانات داخل مستند XML نفسه. إذا كان لديك الكثير من البيانات المنظمة، فإن العلبة العامة ل XML ستكون كبيرة. على سبيل المثال، إذا كانت بياناتك تبدو:

<person>
  <name>Dave</dave>
  <ssn>000-00-0000</ssn>
  <email1>xxxxxx/email1>
</person>
...

سيكون لديك الكثير من النفقات العامة أكثر مما لو كان لديك مستند 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>

لذلك ليس حقا سؤالا عادلا. ذلك يعتمد بشكل كبير على البيانات التي تنوي إرسالها، وكيف / إذا كنت تقوم بضغطه.

نصائح أخرى

أكبر فرق بين BinaryFormatter وتسلسل XML قابلية قابلية؛ من الصعب ضمان BinaryFormatter بين الإصدارات، لذلك فقط مناسب حقا لتخزين أو نقل الاختيارات.

ومع ذلك، يمكنك الحصول على أفضل ما في كليهما، و هل لديك أصغر و هل لديك أسرع، باستخدام تسلسل ثنائي مفصل - وليس لديك حتى تفعل ذلك بنفسك ؛-P

protobuf-net. هو تنفيذ .NET لبروتوكول Google المخازن المؤقتة المواصفات التسلسل الثنائية؛ هذا أصغر من أي XmlSerializer أو BinaryFormatter, تماما المحمولة (ليس فقط بين الإصدارات - يمكنك تحميل دفق PB، على سبيل المثال، جافا، إلخ)، مقاوم، وسريع. كما أنه تم اختباره بشكل شامل، مع عدد عادل من المستخدمين.

انهيار كامل الحجم والسرعة، والغطاء XmlSerializer, BinaryFormatter, DataContractSerializer و protobuf-net هو هنا.

غريزي كنت تريد أن تقول أن الثنائي أكثر كفاءة، لكنه يعتمد بالفعل على البيانات التي يتم تسليمها.

تحقق من هذه المقالة: http://www.nablasoft.com/alkampfer/index.php/2008/10/31/binary-verse-xml-serialization-size/

فقط الإشارة إلى الأداء ليس المقدي الوحيد الذي قد ترغب في إلقاء نظرة عليه.

  • سهولة البناء. هل لديك عدة أيام / أسابيع لبناء روتين Serialiser / Deserialiser واختبره جيدا أو بإمكانه أن ينفق ذلك الوقت بشكل أفضل على الميزات.
  • سهولة استهلاك البيانات. هل يمكن للعميل استخدام محلل مفتوح المصدر مبني مسبقا أو هل يحتاجون إلى تطبيق مجموعة من الكود (المحتمل للعربات التي تجرها الدواب) أنفسهم؟
  • سهولة تصحيح الأخطاء. سوف تكون قادرة على عرض البيانات في ترانزيت مساعدة لتصحيح؟ ثم سيتم تميل تنسيق ثنائي إلى توضيح أي مشاكل.
  • ما هي تكلفة الصيانة لكل طريقة؟

شخصيا، أود استخدام مكتبات XML منشورة ومكتبات مفتوحة المصادر حتى تتم إثبات عنق الزجاجة في الأداء عن طريق الاختبار الفعلي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top