开发者

Which is much faster, XMLParser or SimpleXML

开发者 https://www.devze.com 2022-12-26 09:31 出处:网络
What do you think guys? I currently using SimpleXML for my ent开发者_JAVA百科ire project, which have average of 250KB in memory usage w/ 500micro seconds processing per execution. I just plan to switc

What do you think guys? I currently using SimpleXML for my ent开发者_JAVA百科ire project, which have average of 250KB in memory usage w/ 500micro seconds processing per execution. I just plan to switch to XMLParser, your advice is much appreciated.

Edit : The actual microtime is 0.000578 micro seconds. Im just confused in milli and micro, lol.


In theory at least, XMLParser (a SAX implementation) can be more efficient (speed-wise, but especially memory-wise) than SimpleXML (a DOM implementation), particularly when dealing with larger documents (DOM implementations load the entire XML tree into memory, which can be taxing on resources, whereas SAX implementations allow the programmer to simply traverse the XML without necessarily storing anything in memory, leaving entirely up to you what, if anything, you want to retain in memory) -- see benchmarks comparing various DOM to various SAX parser implementations.

I say can because performing SAX traversal is programatically more complex than traversing or querying the DOM, and a poor use of SAX (or use of SAX in situations where DOM would be better suited anyway, e.g. if at the end of your SAX traversal you ended up loading yourself virtually the entire tree in memory) can actually result in poorer performance than the use of a DOM API.


In most cases, XML Parser will be much slower both in terms of development and execution, mainly because you have to write/execute tons of userland PHP code to navigate/read your document.

In some cases, you can find some improvement using XMLReader (not sure about XML Parser) but the cost is extra development time and harder maintenance. Since your application already uses SimpleXML and only uses 250 KB, your time will most likely be better spent on other areas of your application. 500ms seems quite a lot for some XML processing with SimpleXML, you should profile that and/or post your most CPU-intensive routine in another question for optimization.


Yes, XML Parser (not to confuse with XMLParser ) is preferred if you have memory concerns, because it doesn't require the whole file to be pre-loaded and pre-parsed before use. It's like fgets() or fread() compared to file_get_contents()

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号