Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 26039|Відповідь: 2

[Джерело] .net/c# Xml, Json, Hessian, порівняння серіалізації буферів протоколів

[Копіювати посилання]
Опубліковано 13.04.2018 13:23:31 | | | |
Короткий вступ

Цей блог переважно порівнює продуктивність серіалізації та десеріалізації Xml, Json, Hessian та Protocol Buffers, залишаючи осторонь базові поняття Xml і Json.
Гессіан: Hessian — це легкий інструмент віддаленого доступу на HTTP, який забезпечує функціональність RMI за допомогою бінарного протоколу RPC та вбудовані можливості серіалізації.
Протокольні буфери: формат для обміну даними від Google, який не залежить від мови і оскільки є бінарним форматом, він набагато швидший за використання xml для обміну даними, і може використовуватися для передачі даних між розподіленими додатками або обміну даними в гетерогенних середовищах. Як ефективний і сумісний формат бінарної передачі даних, він може використовуватися в багатьох сферах, таких як мережева передача, конфігураційні файли, зберігання даних тощо. Google надає реалізації Java, C++, Python, а тепер існують реалізації мов, таких як C#, в Інтернеті.

Серіалізація та десеріалізація

XML: Використовуйте XmlSerializer, який йде в комплекті з .Net.
Json: Він використовує ServiceStack.Text, який працює продуктивніше за Newtonsoft.Json, але найшвидший має бути fastJSON.net.
Гессіан: Використання бібліотеки HessianCSharp, завантажено з nuget.
Буфери протоколу: Використання protobuf-net, завантажено з nuget.
Нижче наведено сутності, які використовуються в тесті.

Процесор i7HQ 2.6HZ, який використовувався в тестовій машині.
Ось результати тесту
Серіалізація


Десеріалізація


Довжина байта після серіалізації


Давайте спочатку поговоримо про серіалізацію: тут її тестують відповідно 100, 1000, 10000 і 100000 разів відповідно, ординат — час завершення, одиниця — мілісекунди. Ви можете побачити, що при тестуванні в межах 10000 разів витрата часу на 4 типи серіалізації дуже мала, всі в межах 200 мілісекунд, після 10000–100000 разів усі починають зростати, найгірше — це Xml, найкраще — буфери протоколу, але коли це в межах 10000 разів, Hessian кращий за протокольні буфери.
Між 10 000 десеріалізацій немає великої різниці, але при 10 000 разів ми вже бачимо, що гессіанський більш трудомісткий, а при 100 000 разів гессенський безпосередньо перевищує XML, що змушує мене завжди думати, що проблема в моєму коді, і найкраща продуктивність — це буфери протоколу.
Серіалізована довжина байта, зрозуміло, є найдовшою в Xml, оскільки файл містить багато кінцевих тегів (),</Name> а Protocol Buffers досі найкращий.

Виходячи з наведеного вище графіка, ми майже швидко можемо зробити висновок, що Protocol Buffers є найкращим, але, на мою думку, нам все одно потрібно комплексно оцінити їх з наступних аспектів:
1. Читабельність: Xml і Json — це обидва тексти після серіалізації, і читабельність дуже хороша, наприклад, якщо посередині є помилка, ми можемо легко переглянути обміняні дані і навіть змоделювати їх для тестування; І гессіанські, і протокольні буфери є бінарними, і вміст після серіалізації стає нечитабельним, що певною мірою впливає на усунення несправностей системи.
2. Універсальність: XML і JSON вже є застарілими форматами обміну даними, і це два формати для обміну даними між загальними системами. І гессіанські, і протокольні буфери відносно непопулярні і використовуються рідше.
3. Зручність: Hessian насправді є повноцінним RPC-фреймворком, визначайте інтерфейс на серверній стороні та реалізуйте інтерфейс, копіюйте інтерфейс клієнту. Після невеликого обсягу кодування ми можемо викликати серверну сторону, наприклад, виклик локального методу, який недоступний у трьох інших інструментах, і продуктивність непогана.





Попередній:Windows встановлює сервісну програму .net/c#
Наступний:Рішення StreamReader для спотворених символів під час читання файлів
 Орендодавець| Опубліковано 31.08.2023 20:57:23 |
Бенчмарки продуктивності MessagePack та protobuf-net
https://www.itsvse.com/thread-10655-1-1.html
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com