Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 26039|Ответ: 2

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

[Скопировать ссылку]
Опубликовано 13.04.2018 13:23:31 | | | |
Краткое введение

В этом блоге в основном сравниваются характеристики сериализации и десериализации Xml, Json, Hessian и протокольных буферов, оставляя в стороне базовые концепции Xml и Json.
Hessian: Hessian — это лёгкий инструмент для удаленного подключения на HTTP, который обеспечивает функционал 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, лучший — буферы протокола, но когда это в пределах 10000 раз, Гессенский лучше протокольных буферов.
В 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