SimpleXML与删除节点的DOMDocument

时间:2017-01-20 07:16:23

标签: php xml performance simplexml domdocument

我有两个相同的网页,除了PHP代码。一个使用SimpleXML,另一个使用DOMDocument。代码编辑xml文件(读取,添加节点,删除节点)。

使用SimpleXML我必须使用以下命令删除节点:

unset($node);

但是,使用DOMDocument,我使用:

$node->parentNode->removeChild($node)

虽然SimpleXML由于其简洁性而显得有利,但最终需要额外的0.4秒来加载使用SimpleXML的页面(两个页面都具有相同的php行数)。

这种性能差异背后的原因是什么?是unset()函数让它陷入困境吗?

1 个答案:

答案 0 :(得分:1)

SimpleXML是DOM实现本身使用的同一DOM XML库的抽象。但它是在C中实现的抽象。这意味着在这种情况下,SimpleXML会更快,因为它结合了C级别的多个动作,而其他动作则较慢,因为它只是增加了语法糖。

如果对XML进行大量操作,使用XSLT可能是一个更快的解决方案。

像所有优化一样,你应该衡量和决定。