提问人:PHPWDev 提问时间:4/9/2010 最后编辑:PHPWDev 更新时间:8/8/2013 访问量:9092
XMLParser 或 SimpleXML 哪个更快
Which is much faster, XMLParser or SimpleXML
问:
伙计们,你怎么看?我目前将 SimpleXML 用于我的整个项目,平均内存使用量为 250KB,每次执行处理时间为 500 微秒。我只是打算切换到 XMLParser,非常感谢您的建议。
编辑:实际微时为 0.000578 微秒。我只是对毫微和微感到困惑,哈哈。
答:
至少在理论上,(SAX实现)可能比(DOM实现)更有效(速度方面,但尤其是内存方面),特别是在处理较大的文档时(DOM实现将整个XML树加载到内存中,这可能会对资源造成负担,而SAX实现允许程序员简单地遍历XML,而不必在内存中存储任何内容。 完全由你决定,如果有的话,你想在内存中保留什么) -- 参见比较各种 DOM 和各种 SAX 解析器实现的基准测试。XMLParser
SimpleXML
我之所以说可以,是因为执行 SAX 遍历在编程上比遍历或查询 DOM 更复杂,并且 SAX 使用不当(或在 DOM 更适合的情况下使用 SAX,例如,如果在 SAX 遍历结束时,您最终将自己几乎整个树加载到内存中)实际上会导致比使用 DOM API 更差的性能。
评论
是的,XML Parser(不要与XMLParser混淆)是首选,如果您有内存问题,因为它不需要在使用前预加载和预解析整个文件。与 file_get_contents() 相比,这就像 fgets() 或 fread()
评论
在大多数情况下,XML Parser 在开发和执行方面都会慢得多,主要是因为您必须编写/执行大量用户空间 PHP 代码来导航/读取文档。
在某些情况下,您可以使用 XMLReader(不确定 XML 解析器)找到一些改进,但代价是额外的开发时间和更难的维护。由于您的应用程序已经使用了 SimpleXML,并且只使用了 250 KB,因此您的时间很可能会更好地花在应用程序的其他方面。对于使用 SimpleXML 进行某些 XML 处理来说,500 毫秒似乎相当多,您应该对其进行分析和/或在另一个问题中发布您最密集的 CPU 密集型例程以进行优化。
评论