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