Pregunta

Estoy empezando a desarrollar una aplicación web en PHP que espero se vuelva increíblemente popular y me haga famoso y rico. :-)

Si llega ese momento, mi decisión de analizar los datos de la API como XML con SimpleXML o usar json_decode podría hacer 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 los procesos concurrentes. Mi conclusión es que iré con SimpleXML por el momento debido a su soporte para 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
¿Fue útil?

Solución

Como el " más ligero " En este caso, esperaría que JSON fuera un poco menos estresante en el servidor, pero dudo que sea el mayor problema de rendimiento con el que se encuentre, ya que su sitio crece en popularidad. Utilice el formato con el que se sienta más cómodo.

De forma alternativa, si sabe cómo estructurará sus datos, podría intentar crear una versión con formato XML y una versión con formato JSON y simplemente ejecutarla en su configuración unas cientos de miles de veces para ver si es una diferencia notable.

Otros consejos

Solo hay una forma de determinar qué será más fácil en tu servidor con tu información en tu servidor.

¡Pruébalo!

Generaría algunos datos que parecen similares a lo que estarás traduciendo y usaré uno de los marcos de prueba de unidades para decodificarlo unos cuantos miles de veces con cada uno de SimpleXML y json_decode, lo suficiente para obtener resultados significativos. Y luego puedes decirnos qué funcionó.

Lo sentimos, no es exactamente el tipo de respuesta que buscabas, pero en realidad, es la única forma correcta de hacerlo. Buena suerte!

No es realmente una respuesta a la pregunta, pero puedes esperar hasta que muchos usuarios lleguen a tu sistema. Es posible que se sorprenda de dónde se encuentran sus cuellos de botella:

http://gettingreal.37signals.com/ch04_Scale_Later.php

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top