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