Я начинаю разрабатывать веб-приложение на PHP, которое, я надеюсь, станет невероятно популярным и сделает меня известным и богатым. : -)
Если это время придет, мое решение о том, анализировать ли данные API как XML с SimpleXML или использовать json_decode, может изменить масштабируемость приложения.
Кто-нибудь знает, какой из этих подходов более эффективен для сервера?
Обновление: Я провел элементарный тест, чтобы увидеть, какой метод более эффективен. Похоже, что json_decode
выполняется немного быстрее, чем simplexml_load_string
. Это не очень убедительно, потому что не проверяет такие вещи, как масштабируемость параллельных процессов. Я пришел к выводу, что пока что пойду с SimpleXML из-за его поддержки выражений XPath.
<code><?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))?>
JSON elapsed: <?=sprintf('%.4f', ($end_json - $start_json))?>
Результат:
XML elapsed: 9.9836
JSON elapsed: 8.3606