XML结构的复杂性是否会影响解析速度?

时间:2013-06-26 04:08:34

标签: java xml dom sax stax

从“解析速度”的角度来看,有多少影响(如果有的话)有多少属性和XML文档的深度解析速度? 使用更多元素或尽可能多的属性是否更好? “深层”XML结构难以阅读吗?

我知道如果我使用更多属性,XML就不会那么重,而且将XML调整到解析器并不是创建XML文件的正确方法

感谢

3 个答案:

答案 0 :(得分:2)

我认为,这取决于您是否正在进行验证。如果您要对大型复杂模式进行验证,则可能需要花费更多时间来进行验证...而不是简单模式。

对于非验证解析器,架构的复杂性可能并不重要。性能将由XML的大小决定。

当然,性能还取决于您使用的解析器类型。 DOM解析器通常会更慢,因为您必须在开始之前构建完整的内存中表示。使用SAX解析器,您可以选择所需的部件。


但请注意,我的回答是基于直觉。我不知道有人试图以科学的方式测量测量 XML复杂性对性能的影响。首先,很难真正描述XML复杂性。人们通常更感兴趣的是比较给定样本XML的解析器,而不是考虑输入复杂性是否是一个因素。

答案 1 :(得分:2)

性能是实现的属性。不同的解析器是不同的。不要试图获得关于性能的理论答案,只需测量它。

  

使用更多元素或尽可能多的属性是否更好?

这与解析性能有什么关系?我发现很难相信性能上的任何差异都会证明扭曲XML设计是正确的。相反,使用扭曲的XML设计,相信它会提高解析速度,几乎肯定会在生成和使用XML的应用程序中为您带来巨大的额外成本。

答案 2 :(得分:0)

如果您正在使用Sax解析器,那么XML是否是一个大型解析器并不重要,因为它是一个自上而下的解析器而不是在内存中保存完整的XML但是对于DOM来说它很重要,因为它在内存中保存了完整的XML。您可以在我的博客帖子here

中了解XML解析器的比较