parser - php xml parsing
PHP: ¿es JSON o XML parser más rápido? (6)
¿Ha considerado cómo los ahorros de ancho de banda en general podrían afectar el rendimiento de su script? Si sus solicitudes se van a repetir, una buena cantidad de tiempo con JSON debe ser la opción económica más acertada.
Estoy creando clases que se interconectan con la API de Twitter, y me pregunto si el XML integrado de PHP o el analizador JSON es más rápido. Twitter me enviará los mismos datos en cualquier formato, por lo que el rendimiento de PHP determinará mi elección. Estoy usando php_apc, así que puedes ignorar el tiempo de análisis y asumir que me estoy quedando sin bytecode.
¡Gracias!
más: sólo estoy buscando obtener matrices asociativas de los datos. No estoy haciendo árboles, iteración de nodos o algo demasiado complejo. El formato siempre será el mismo. (¡Espero!)
El comentario de Adam arriba me convenció de que lo evaluara. Al usar https://twitter.com/status/mentions.[format] , encontré que simplexml_load_string () es Ligeramente más rápido que json_decode (). Pero la diferencia es prácticamente un margen de error.
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
versus
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
en el siguiente código (donde ya he curvado los datos a un archivo, datos. [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>";
}
JSON tiende a ser mucho más pequeño en tamaño
También ejecuta json_decode una vez y luego accede a los datos como una matriz que no sirve para ninguna otra función.
Sin ejecutar benchmarks id ir con JSON es más rápido
La respuesta depende de cómo planeas usarla. Quiero decir que si creas una solicitud y las procesas dentro de un script PHP, creo que XML será mucho más rápido. Pero una vez que esté considerando crear y llamadas AJAX y un proceso posterior de resultados, debe considerar el uso de JSON, ya que se beneficia de la representación automática de JavaScript del resultado de JSON como un objeto y también admite la solicitud de dominios cruzados con funciones de devolución de llamada, mientras que para XML será un proxy .
No hice ningún punto de referencia pero ...
Dado que JSON es solo una descripción de secuencias de cadenas anidadas, sin la necesidad de ofrecer una interfaz DOM, análisis de atributos y otras cosas sutiles, mi suposición es que un analizador JSON es mucho más rápido que un analizador XML.
Tiendo a encontrar que simplexml_load_string () es más rápido que json_decode () cuando el retorno de json es un objeto.
Sin embargo, tener el json devuelto como una matriz utilizando json_decode ($ string, true) es en realidad mucho más rápido que usar un objeto (como ocurre con la mayoría de las cosas de PHP al comparar matrices con objetos).
He visto que json_decode () es dos veces más rápido que simplexml_load_string () en estas circunstancias.