strip_tags remove ent_quotes ejemplo php xml performance

remove - ¿Cuál es el analizador XML más rápido en PHP?



strip_tags() (4)

** Esto está orientado principalmente a aquellos que comienzan con el análisis XML y no están seguros de qué analizador usar.

Hay dos formas "grandes" de analizar: puede cargar el XML en la memoria y encontrar lo que necesita (DOM, SimpleXML) o transmitirlo: leerlo y ejecutar el código según lo que lea (XMLReader, SAX ).

Según Microsoft , SAX es un analizador "push", que envía toda la información a su aplicación y su aplicación la procesa. SimpleXML es un analizador "pull", que le permite omitir fragmentos de datos y solo obtener lo que necesita. Según Microsoft, esto puede simplificar y acelerar su aplicación, y supongo que las implementaciones de .NET y PHP son similares. Supongo que su elección dependería de sus necesidades: si saca algunas etiquetas de un trozo más grande y puede usar $xml->next(''Element'') para omitir fragmentos significativos, puede encontrar que XMLReader es más rápido que sax.

Al analizar los archivos XML "pequeños" (<30kb, 700 líneas) de forma repetitiva, es posible que no espere que haya una gran diferencia de tiempo entre los métodos de análisis. Me sorprendió descubrir que había. Corrí una comparación de un pequeño feed procesado en SimpleXML y XMLReader. Esperamos que esto ayude a otra persona a visualizar cuán importante es la diferencia de estos datos. Para una comparación de la vida real, esto es analizar la respuesta a dos fuentes de solicitud de información de productos de Amazon MWS.

Cada Tiempo de análisis es el tiempo requerido para tomar 2 cadenas XML y devolver alrededor de 120 variables que contienen valores de cada cadena. Cada bucle toma datos diferentes, pero cada una de las pruebas se realizó en los mismos datos en el mismo orden.

SimpleXML carga el documento en la memoria. Utilicé microtime para verificar tanto el tiempo para completar el análisis (extraer los valores relevantes) como el tiempo dedicado a crear el elemento (cuando se llamó al new SimpleXMLElement($xml) ). He redondeado estos a 4 lugares decimales.

Parse Time: 0.5866 seconds Parse Time: 0.3045 seconds Parse Time: 0.1037 seconds Parse Time: 0.0151 seconds Parse Time: 0.0282 seconds Parse Time: 0.0622 seconds Parse Time: 0.7756 seconds Parse Time: 0.2439 seconds Parse Time: 0.0806 seconds Parse Time: 0.0696 seconds Parse Time: 0.0218 seconds Parse Time: 0.0542 seconds __________________________ 2.3500 seconds 0.1958 seconds average Time Spent Making the Elements: 0.5232 seconds Time Spent Making the Elements: 0.2974 seconds Time Spent Making the Elements: 0.0980 seconds Time Spent Making the Elements: 0.0097 seconds Time Spent Making the Elements: 0.0231 seconds Time Spent Making the Elements: 0.0091 seconds Time Spent Making the Elements: 0.7190 seconds Time Spent Making the Elements: 0.2410 seconds Time Spent Making the Elements: 0.0765 seconds Time Spent Making the Elements: 0.0637 seconds Time Spent Making the Elements: 0.0081 seconds Time Spent Making the Elements: 0.0507 seconds ______________________________________________ 2.1195 seconds 0.1766 seconds average over 90% of the total time is spent loading elements into the DOM. Only 0.2305 seconds is spent locating the elements and returning them.

Mientras que el XMLReader, que se basa en la transmisión, pude omitir una parte significativa de una de las fuentes XML ya que los datos que quería estaban cerca de la parte superior de cada elemento. "Su experiencia puede ser diferente."

Parse Time: 0.1059 seconds Parse Time: 0.0169 seconds Parse Time: 0.0214 seconds Parse Time: 0.0665 seconds Parse Time: 0.0255 seconds Parse Time: 0.0241 seconds Parse Time: 0.0234 seconds Parse Time: 0.0225 seconds Parse Time: 0.0183 seconds Parse Time: 0.0202 seconds Parse Time: 0.0245 seconds Parse Time: 0.0205 seconds __________________________ 0.3897 seconds 0.0325 seconds average

Lo sorprendente es que, aunque la ubicación de los elementos es un poco más rápida en SimpleXML una vez que está todo cargado, en realidad es más de 6 veces más rápido utilizar XMLReader en general.

Puede encontrar información sobre el uso de XMLReader en ¿Cómo usar XMLReader en PHP?

para un determinado proyecto, necesito alguna forma de analizar XML y obtener datos de él. Así que me pregunto, ¿cuál de los analizadores integrados es el más rápido?

Además, sería bueno que el analizador pudiera aceptar una cadena XML como entrada. Tengo mi propia implementación de trabajo seguro con subprocesos y no quiero que algunas bibliotecas desagradables seguras para subprocesos hagan que mis esfuerzos sean inútiles.


Cada extensión XML tiene sus propias fortalezas y debilidades. Por ejemplo, tengo una secuencia de comandos que analiza el volcado de datos XML de . El archivo posts.xml es de 2.8GB! Para este gran archivo XML, tuve que usar XMLReader porque lee XML en un modo de transmisión, en lugar de intentar cargar y representar todo el documento XML en la memoria a la vez, como lo hace la extensión DOM.

Por lo tanto, debe ser más específico al describir cómo va a utilizar el XML para decidir qué extensión de PHP va a usar.

Todas las extensiones XML de PHP proporcionan algún método para leer datos XML como una cadena.



Realmente no hay muchos analizadores en PHP.

Los más efectivos serán aquellos provistos con PHP, escriba un punto de referencia con DOM y SimpleXML y verifique cuál funciona mejor.