哪个更快,XMLParser或SimpleXML

时间:2010-04-09 00:06:51

标签: php simplexml xml-parsing

你觉得伙计们怎么样?我目前在整个项目中使用SimpleXML,内存使用量平均为250KB,每次执行500微秒处理。我只是打算切换到XMLParser,非常感谢您的建议。

编辑:实际的微量时间为0.000578微秒。我只是混淆了milli和micro,哈哈。

3 个答案:

答案 0 :(得分:16)

至少在理论上,XMLParser(一个SAX实施) 可以更有效率(速度方面,但尤其是内存方面) )而不是SimpleXML(一个DOM实现),特别是在处理更大的文档时(DOM实现将整个XML树加载到内存中,这可能会对资源造成负担,而SAX实现允许程序员简单地遍历) XML不必将任何内容存储在内存中,完全取决于您想要保留在内存中的内容) - 请参阅benchmarks将各种DOM与各种SAX解析器实现进行比较。

我说可以,因为执行SAX遍历在编程上比遍历或查询DOM更加复杂,并且使用SAX (或者在无论如何DOM更适合的情况下使用SAX,例如,如果在SAX遍历结束时,您最终自己自己几乎将整个树加载到内存中)实际上会导致性能较差而不是使用DOM API

答案 1 :(得分:4)

是的,XML Parser(不要与XMLParser混淆)是首选,如果您有内存问题,因为它不需要在使用前预先加载和预解析整个文件。就像fgets()或fread()与file_get_contents()

相比

答案 2 :(得分:4)

在大多数情况下,XML Parser在开发和执行方面都会慢得多,这主要是因为您必须编写/执行大量用户态PHP代码来导航/读取您的文档。

在某些情况下,您可以使用XMLReader找到一些改进(不确定XML Parser),但成本是额外的开发时间和更难的维护。由于您的应用程序已使用SimpleXML并且仅使用250 KB,因此您的时间很可能会更好地花在应用程序的其他区域上。对于使用SimpleXML的某些XML处理,500ms看起来相当多,您应该在另一个问题中对此进行分析和/或发布最耗费CPU的例程以进行优化。

相关问题