PHP json_decoding против синтаксического анализа XML

Что быстрее? Какие-нибудь тесты / тесты?


person onassar    schedule 26.11.2010    source источник
comment
Это сравнение яблок и апельсинов. Во всяком случае, вопрос должен заключаться в том, какой из них больше подходит для UseCase X? И когда вы спрашиваете тесты, почему бы не сделать некоторые свои собственные?   -  person Gordon    schedule 27.11.2010
comment
Согласитесь с Гордоном, надо бы знать дело. Но без какой-либо другой информации я голосую за JSON. ;)   -  person Jason McCreary    schedule 27.11.2010
comment
возможный дубликат Когда лучше использовать JSON вместо XML?   -  person mario    schedule 27.11.2010
comment
Почему бы не написать свой собственный - согласованные, оптимальные результаты достигаются путем тестирования собственного варианта использования. Но, с другой стороны, могут существовать хорошо написанные тесты, выполненные экспертами, которые знают лучшие современные способы обработки XML и JSON; катание самостоятельно рискует ошибиться новичком.   -  person StaxMan    schedule 27.11.2010


Ответы (1)


json_decode() быстрее. Без обсуждения. Однако маржа может быть измерена только для определенного типа XML-документа. Маршаллинг XML-RPC не так уж далек от JSON, например. Но в любом случае вы должны решить, какие данные вы хотите передать или сохранить:

JSON подходит для представления скалярных типов данных, массивов или объектов.

XML - это, прежде всего, семейство форматов документов. Вы можете использовать его для сериализации типов данных из любого языка программирования; но это не его цель. Думайте о XML как о микробазах документов.

Так что это действительно сравнение яблок с книгами.


@StaxMan: следует ненаучное доказательство. Обратите внимание, как этот пример уже искажен в пользу JSON из-за использования неоптимальной псевдоструктуры данных.

$json = <<<END
   [55, "text goes here", 0.1]
END;

$xml = <<<END
<array>
   <int>55</int>
   <string>text goes here</string>
   <float>0.1</float>
</array>
END;

for ($i=0,$t=t(); $i<100000; $i++) {
   json_decode($json);
}
echo "json ", t(-$t), "\n";

for ($i=0,$t=t(); $i<100000; $i++) {
   simplexml_load_string($xml);
}
echo "xml ", t(-$t), "\n";

function t($t1=0) {
   $a = explode(" ", microtime());
   return $a[0] + $a[1] + $t1;
}

Результат:

json 1.6152667999268
xml 2.9058270454407

Опять же, ничего не сказать. Но для JSON это теоретическое преимущество.

person mario    schedule 26.11.2010
comment
Есть ссылки на доказательства? Я спрашиваю, потому что несколько предыдущих вопросов указывали на результаты, которые предлагали другие, которые предполагали другой результат, а не потому, что я оспариваю само утверждение. - person StaxMan; 27.11.2010
comment
@StaxMan Я воспринимаю как личное оскорбление то, что вы ставите под сомнение мои полномочия делать возмутительные предположения о скорости. Но все равно см. Выше. Думаю, большинство тестовых шаблонов отдают предпочтение JSON. Еще хуже, если вы использовали правильные типы данных XMLSchema. - person mario; 27.11.2010
comment
Нет никакого способа, чтобы синтаксический анализ XML был быстрее. Он должен пройти через всю DOM в поисках CDATA, атрибутов и различных типов узлов. - person Matt Williamson; 27.11.2010
comment
Хех, какое-то время я думал, что ты серьезно ранен ... Иногда я медленно грокую тонкий изощренный юмор. :) Как бы то ни было, более быстрое декодирование JSON имеет большой смысл с теоретической точки зрения; Я просто вспоминаю другие вопросы, когда кто-то написал тест, не показавший, что JSON заметно быстрее (я думаю, что это было stackoverflow.com/questions/993282/). Ваши дополнения выглядят хорошо и подтверждают ваше утверждение. - person StaxMan; 02.12.2010
comment
Мэтт: все, что я говорю, это то, что разница между скоростями парсера (внутри класса, т.е. самые медленные и самые быстрые парсеры xml, самые медленные / самые быстрые парсеры xml) ОГРОМНА - я написал парсеры xml и json (на Java), измеренные и самые быстрые парсеры xml легко обгоняют самые медленные парсеры xml; и то же самое в обратном направлении. Лучшее против лучшего, да, парсеры JSON немного впереди, в грубом отношении к размеру ввода. - person StaxMan; 02.12.2010