Я начинаю разрабатывать веб-приложение на PHP, которое, я надеюсь, станет невероятно популярным и сделает меня знаменитым и богатым. :-)Что снижает нагрузку на сервер PHP: SimpleXML или json_decode?
Если придет время, мое решение о том, следует ли анализировать данные API как XML с помощью SimpleXML или использовать json_decode, может повлиять на масштабируемость приложения.
Кто-нибудь знает, какой из этих подходов более эффективен для сервера?
Обновление: Я провел рудиментарный тест, чтобы узнать, какой метод был более совершенным. Похоже, что json_decode
работает чуть быстрее, чем simplexml_load_string
. Это не очень убедительно, потому что это не проверяет такие вещи, как масштабируемость параллельных процессов. Мое заключение заключается в том, что я пока буду с SimpleXML из-за поддержки выражений XPath.
<?php
$xml = file_get_contents('sample.xml');
$json = file_get_contents('sample.js');
$iters = 1000;
// simplexml_load_string
$start_xml = microtime(true);
for ($i = 0; $i < $iters; ++$i) {
$obj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
}
$end_xml = microtime(true);
// json_decode
$start_json = microtime(true);
for ($i = 0; $i < $iters; ++$i) {
$obj = json_decode($json);
}
$end_json = microtime(true);
?>
<pre>XML elapsed: <?=sprintf('%.4f', ($end_xml - $start_xml))?></pre>
<pre>JSON elapsed: <?=sprintf('%.4f', ($end_json - $start_json))?></pre>
Результат:
XML elapsed: 9.9836
JSON elapsed: 8.3606
Ваш тест не очень реалистично. Наверняка, вы каким-то образом будете манипулировать данными, а не просто загружать их? По крайней мере, попробуйте выполнить несколько значений или что-то еще. Время загрузки, вероятно, даже не является основной частью фактической обработки, которую вы закончите. – 2010-01-03 09:48:27