С хорошо написанным синтаксическим анализатором, XML и JSON будут иметь более или менее одинаковое время.У вас может быть медленный синтаксический анализатор JSON и быстрый синтаксический анализатор XML.
Возможно, немного медленнее для XML, поскольку синтаксис более сложен, чем синтаксис JSON.
Но узкое место будет в основном читать изжесткий диск, без разбора содержимого.
Мы использовали JSON для клиента / сервера нашего ORM по нескольким причинам (но вы найдете другие, я не хочу здесь троллить, просто поговорите с нашиминебольшой эксперимент):
- Как и XML, это текстовый формат, читаемый человеком, для представления простых структур данных и ассоциативных массивов (называемых объектами);
- Его легче читать (как для людей, так и для машин), более быстрое в реализации и обычно меньше по размеру, чем XML;
- Это очень эффективный формат для кэширования данных;
- Его компоновка позволяет переписать его на место вотдельные строки UTF-8 с нулевым символом в конце, почти без потерь места: эта функция используется для быстрого преобразования JSON в текст результатов таблиц без выделения памятини копирование данных;
- Он изначально поддерживается языком JavaScript, что делает его идеальным форматом сериализации в любом приложении AJAX (т. е. Web 2.0);
- Формат JSON указан в хорошо известном иsimple RFC;
- Кодировка текста по умолчанию для JSON и нашего ORM - UTF-8, что позволяет сохранять и передавать полную кодировку Unicode;
- Это формат данных по умолчанию, используемыйASP.NET AJAX-сервисы, созданные в Windows Communication Foundation (WCF) начиная с .NET Framework 3.5;так что Microsoft официально «готова»;
- Для передачи двоичных двоичных объектов нет CDATA, как в XML.Поэтому мы просто кодируем двоичные данные как шестнадцатеричные или Base64 (использует меньше места) внутри строки JSON.
Что касается скорости разбора, вы можете взглянуть на наш синтаксический анализатор на месте и JSONписатель из SQLite3 результаты .Это было очень оптимизировано для скорости, и это быстро.Мы написали простую, но эффективную сериализацию JSON для любого TPersistent, включая коллекции.Мы просто добавляем сериализатор JSON динамического массива , что также очень быстро.
Дополнительное примечание:
Все эти анализаторы отличаются от того, который вы упомянули, потому что они анализируют содержимое JSON и форматируют его как текст внутри входного буфера: нет памятиВыделение производится при разборе, поэтому оно должно быть быстрее других решений.Текстовое содержимое неэкранировано, поля заполнены # 0 и вычислен указатель на начало текста.Таким образом, чтобы получить доступ к значению, вы просто используете указатель для получения данных.Обычно он анализирует некоторое МБ содержимого JSON без времени.
Также обратите внимание на анализатор JSON, встроенный в DWS .Автор утверждал, что это было быстро.Но все равно выделил блок памяти для каждого объекта.