Estoy comenzando a desarrollar una aplicación web en PHP que espero se vuelva increíblemente popular y me haga famoso y rico. :-)¿Qué significa menos carga en un servidor PHP: SimpleXML o json_decode?
Si llega el momento, mi decisión de analizar los datos de la API como XML con SimpleXML o utilizar json_decode podría marcar una diferencia en la escalabilidad de la aplicación.
¿Alguien sabe cuál de estos enfoques es más eficiente para el servidor?
Actualización: Realicé una prueba rudimentaria para ver qué método era más eficaz. Parece que json_decode
se ejecuta un poco más rápido que simplexml_load_string
. Esto no es terriblemente concluyente porque no prueba cosas como la escalabilidad de procesos concurrentes. Mi conclusión es que iré con SimpleXML por el momento debido a su compatibilidad con expresiones 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>
Resultado:
XML elapsed: 9.9836
JSON elapsed: 8.3606
Su punto de referencia no es muy realista. Seguramente, manipularás los datos de alguna manera, ¿no solo cargarlos? Al menos intente iterar a través de algunos valores o algo. El tiempo de carga probablemente ni siquiera sea la mayor parte del procesamiento real que terminará haciendo. –