Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 26039|Отговор: 2

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

[Копирай линк]
Публикувано в 13.04.2018 г. 13:23:31 ч. | | | |
Кратко въведение

Този блог основно сравнява сериализацията и десериализацията на Xml, Json, Hessian и Protocol Buffers, като оставя настрана основните концепции за Xml и Json.
Hessian: Hessian е лек отдалечен onhttp инструмент, който предоставя RMI функционалност чрез двоичния RPC протокол и вградени възможности за сериализация.
Протоколни буфери: Формат за обмен на данни от Google, който е независим от езика и тъй като е двоичен формат, е много по-бърз от използването на xml за обмен на данни и може да се използва за комуникация между разпределени приложения или обмен на данни в хетерогенни среди. Като ефективен и съвместим формат за двоична предаване на данни, той може да се използва в много области като мрежова предаване, конфигурационни файлове, съхранение на данни и др. Google предоставя реализации на Java, C++, Python, а сега има и реализации на езици като C# в интернет.

Сериализация и десериализация

XML: Използвайте XmlSerializer, който идва с .Net.
Json: Използва ServiceStack.Text, който е по-ефективен от Newtonsoft.Json, но най-бързият трябва да е fastJSON.net.
Hessian: Използвам библиотеката HessianCSharp, изтеглена от nuget.
Протоколни буфери: Използвам protobuf-net, изтеглен от nuget.
Следните са обектите, използвани в теста.

Процесорът i7HQ 2.6Hz, използван в тестовата машина.
Ето резултатите от теста
Сериализация


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


Дължина на байта след сериализация


Нека първо поговорим за сериализацията, тук се тества съответно 100 пъти, 1000 пъти, 10000 пъти и 100000 пъти, ординатът е времето за завършване, единицата е милисекунди. Виждате, че при тестване в рамките на 10000 пъти, времевото разходване на 4 вида сериализация е много малко, всички в рамките на 200 милисекунди, след 10000 до 100000 пъти, всички започват да растат, най-лошият е Xml, най-добрият е Protocol Buffers, но когато е в рамките на 10000 пъти, Hessian е по-добър от протоколните буфери.
Няма голяма разлика в рамките на 10 000 десериализации, но при 10 000 пъти вече виждаме, че Hessian е по-времеемък, а при 100 000 пъти Hessian директно надвишава XML, което ме кара винаги да мисля, че има проблем с моя код и най-добрата производителност все още са Protocol Buffers.
Сериализираната дължина на байт е разбираемо най-дългата в Xml, защото файлът съдържа много крайни тагове (),</Name> а Protocol Buffers все още е най-добрият.

Въз основа на горната графика можем почти бързо да заключим, че Protocol Buffers е най-добрият, но мисля, че все пак трябва да го оценим изчерпателно от следните аспекти:
1. Четимост: Xml и Json са текстови след сериализация, а четимостта е много добра, например, ако има грешка по средата, лесно можем да видим обменените данни и дори да симулираме данните за тест; И Hessian, и протоколни буфери са двоични и съдържанието остава нечетимо след сериализация, което има определено влияние върху отстраняването на проблеми в системата.
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