Производительность JSON vs. XML - PullRequest
4 голосов
/ 10 июня 2009

Я использую веб-сервис, который предоставляет большой набор результатов в формате XML или JSON. Какой формат будет быстрее или лучше (на основе производительности)? Кроме того, какой язык я должен использовать для анализа XML / JSON? Должен ли я использовать PHP или JavaScript?

Ответы [ 8 ]

13 голосов
/ 10 июня 2009

оба имеют свои преимущества:

JSON

  • прост в обращении: $dataStructure = JSON_decode($serializedString);, готово.

XML

  • частичная обработка данных: если ваш набор результатов слишком велик, чтобы его можно было обработать (проанализировать) за один раз, это может быть подходящим вариантом. примечание: SimpleXML легче работать с xml lib, но он также анализирует весь xml-файл сразу, поэтому в этом случае нет никакой выгоды по сравнению с JSON.

вопрос о том, с каким языком обрабатывать ваш набор результатов, немного бессмысленный. javascript на стороне клиента *, php на стороне сервера. поэтому это зависит от того, что вы хотите сделать с набором результатов.

вы можете передать результат непосредственно в браузер / js, ничего не делая на стороне сервера, и позволить клиенту выполнять фильтрацию и рендеринг. это может иметь смысл в определенных ситуациях, но обычно это не то, что вы хотите.

мой совет: если возможно, используйте JSON.

ad *: вы можете использовать javascript на стороне сервера ( rhino , v8cgi , ...), но это не то, что вы думаете.

11 голосов
/ 10 июня 2009

«PHP или JavaScript» звучит как странный выбор: PHP обычно используется в качестве языка на стороне сервера, тогда как JavaScript обычно используется в качестве языка на стороне клиента .

Какова твоя ситуация? Что заставляет вас предлагать эти два языка в частности? Если бы вы могли дать больше информации о том, что вы пытаетесь сделать, это бы очень помогло. (Мы не знаем, разрабатываете ли вы веб-приложение, инструмент пакетной обработки, приложение с графическим интерфейсом и т. Д.)

Я подозреваю, что JSON будет немного более компактным, чем XML, хотя, если они сжимают данные, вы, вероятно, обнаружите, что они в конечном итоге принимают одну и ту же полосу пропускания (поскольку большая часть «раздувания» XML легко сжимается).

Как всегда, лучший способ выяснить это - протестировать определенный веб-сервис с некоторыми реалистичными данными. Общие положения не являются хорошей основой для принятия решений.

2 голосов
/ 10 июня 2009

Я бы пошел на JSON, вы не платите "налог на угловую скобку". Выбор между PHP и Javascript связан с объемом обработки, необходимой для данных (я делаю скачок здесь).

Много обработки, используйте PHP, чтобы он был на стороне сервера. Небольшая обработка использует Javascript для более отзывчивой страницы (загрузка данных через AJAX).

1 голос
/ 02 февраля 2012

Одна вещь, которая, возможно, была упущена, это то, что клиенту JavaScript не нужно анализировать JSON, так что вы получите выигрыш в производительности. Браузер проанализирует XML в DOM и передаст его вашему обратному вызову, после чего вам нужно извлечь из этого DOM необходимую вам информацию. С JSON вы возвращаете объект, и необходимость извлечения из DOM исчезла.

1 голос
/ 11 июня 2009

Хотя аспекты производительности действительно сильно различаются в зависимости от языка / комбинации инструментов, в конце концов xml и json, как правило, имеют схожие характеристики производительности при использовании лучших инструментов платформы. То есть вы не найдете еще один в два раза быстрее или больше; теоретические ограничения аналогичны для текстовых форматов. Оба «достаточно хороши» в этом отношении практически для любого случая использования.

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

И, как упоминал Джон, сравнение PHP и Javascript действительно звучит странно ... яблоки и апельсины или около того.

1 голос
/ 10 июня 2009

Я думаю, вам придется измерить это самостоятельно. Производительность будет зависеть от:

  1. размер данных
  2. сложность данных
  3. его формат (JSON или XML)

Итак, вы можете видеть, что есть ряд переменных.

Требуется ли веб-службе, которую вы используете, сбор данных в одном формате по сравнению с другим?

Существует значительное количество вариантов парсинга JASON и XML, поэтому не ограничивайте себя PHP или Javascript (если у вас есть выбор). И, наконец, если вы запрашиваете у веб-службы, у вас будут накладные расходы на транспортировку сети, настройку соединения и т. Д. Таким образом, любая экономия времени при анализе может быть незначительной. Ваши усилия могут быть лучше потрачены в другом месте.

Не думаю, что я ответил на ваш вопрос, кроме как дать вам больше вещей для размышлений!

0 голосов
/ 11 апреля 2012

Если вы используете приложение с ajax, то вам следует выбрать Javascript для обработки данных на стороне клиента, что снизит использование php на сервере, что означает более эффективную работу на стороне сервера. Вы можете сохранить свой набор результатов в файле json, а затем вызвать его на стороне клиента с помощью javascript. Это будет наилучшим из возможных способов, поскольку это не потребляет ресурсы на сервере, а данные будут обрабатываться на стороне клиента. здесь я буду отдавать предпочтение json над xml, потому что xml требует больше места для хранения, чем json из-за его стиля тегов, а json подобен массиву в javascript, который будет быстрее, чем xml. то же самое на стороне сервера, вы можете легко преобразовать ваш массив json в массив php (просто обратитесь к функции json_decode в PHP).

Сейчас дни в моде, потому что он прост в использовании и работает быстрее.

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

0 голосов
/ 10 июня 2009

Вы должны использовать Python, предпочтительно:)

Что касается формата, я думаю, JSON будет немного быстрее, но это зависит от деталей, и эта задача все равно будет связана с сетью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...