PHP: ускоритель JSON или XML?

Я строю классы, которые взаимодействуют с API-интерфейсом Twitter, и мне интересно, быстрее ли встроенный XML-анализатор PHP или JSON? Twitter будет отправлять мне те же данные в любом формате, поэтому производительность PHP определит мой выбор. Я использую php_apc, поэтому вы можете игнорировать время синтаксического анализа и предполагать, что я запускаю байт-код.

Благодаря!

more: Я просто хочу получить ассоциативные массивы из данных. Я не собираюсь ходить по дереву, итерации узлов или что-то слишком сложное. Формат всегда будет одинаковым. (Я надеюсь!)

Solutions Collecting From Web of "PHP: ускоритель JSON или XML?"

Я не делал никаких тестов, но …

Поскольку JSON – это всего лишь описание вложенных последовательностей строк, без необходимости предлагать интерфейс DOM, парсинг атрибутов и другие тонкие вещи, я предполагаю, что парсер JSON быстрее работает с парсером XML.

Комментарий от Адама выше убедил меня сравнить его. Используя https://twitter.com/status/mentions.%5Bformat%5D , я обнаружил, что simplexml_load_string () работает медленнее, чем json_decode (). Но разница – это практически погрешность.

Test #1 time (xml): 3.75221395493 seconds Test #2 time (xml): 4.1562371254 seconds Test #3 time (xml): 3.60420489311 seconds Test #4 time (xml): 3.85622000694 seconds Test #5 time (xml): 3.89622211456 seconds 

против

 Test #1 time (json): 4.53225803375 seconds Test #2 time (json): 4.06823205948 seconds Test #3 time (json): 4.03222990036 seconds Test #4 time (json): 3.80421590805 seconds Test #5 time (json): 3.88022208214 seconds 

на следующий код (где я уже скручивал данные в файл, данные. [xml, json]).

 <?php $test = 'json'; //xml or json $data = implode(file("data.".$test),"\r\n"); for ($t=1; $t<=5; $t++) { $start[$t] = microtime(1); for ($i=0; $i<3000; $i++) { if ($test == 'xml') $xml = simplexml_load_string($data); else $json = json_decode($data); } $end[$t] = microtime(1); echo "<p>Test #{$t} time ({$test}): " . ($end[$t] - $start[$t]). " seconds</p>"; } 

Я считаю, что simplexml_load_string () быстрее, чем json_decode (), когда json return является объектом.

Однако, если json возвращен как массив с использованием json_decode ($ string, true), на самом деле намного быстрее, чем с использованием объекта (как это происходит с большинством PHP при сравнении массивов с объектами).

Ive видел json_decode () в два раза быстрее, чем simplexml_load_string () в этих обстоятельствах.

Ответ зависит от того, как вы планируете его использовать. Я имею в виду, если вы создадите некоторый запрос и обработаете их в PHP-скрипте, я считаю, что XML будет намного быстрее. Но как только вы планируете создавать вызовы и AJAX, а затем обрабатывать результат, вы должны использовать JSON, так как вы используете автоматическое представление результата JSON в JavaScript как объект, а также поддерживает кросс-доменный запрос с функциями обратного вызова, тогда как для XML вы будете использовать прокси-сервер ,

Рассматривали ли вы, как общая пропускная способность может повлиять на производительность вашего скрипта? Если ваши запросы будут повторены, значительное количество времени, использующее JSON, должно быть разумным экономическим выбором.

JSON, как правило, намного меньше по размеру

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

Без запуска тестов id идти с JSON быстрее