Java中的XML: 文档模型,第一部分:性能 - 编程入门网
L 甚至超过基于 SAX2 的模型。虽然 EXML 具有废弃单独的空白内容的优势,但是总体上,它是本测试中最差的。
文档遍历时间 文档遍历时间测试检查遍历构造的文档表示所需的时间,按文档顺序遍历每个元素、属性和文本内容段。它试图表示文档模型接口的性能,这对于从进行过解析的文档中重复访问信息的应用程序来说可能很重要。总体上,遍历时间比解析时间快得多。对于只对解析过的文档单次遍历的应用程序,解析时间将比遍历时间更重要。图 2 显示了结果。 图 2. 文档遍历时间 在本测试中,XPP 的性能大大超过了其余的测试对象。Xerces DOM 所花费的时间大约是 XPP 的两倍。虽然 EXML 具有废弃文档中单独的空白内容的优势,但是,EXML 花费的时间几乎是 XPP 的三倍。dom4j 在这张图中处于中间位置。 使用 XPP 拉回时,直到访问文档表示时才真正发生对文档文本的解析。这导致第一次遍历文档表示时的开销非常大(表中未显示)。如果以后访问整个文档表示,则当使用拉回解析方法时,XPP 显示性能的净损失。对于拉回解析器来说,前两个测试所需的总时间比使用 XPP 的常规解析长(长 20% 到 100%,这取决于文档)。但是,当还未完全访问正在进行解析的文档时,拉回解析器方法仍然具有可观的性能优势。 带有延迟节点创建的 Xerces 显示了相似的行为,第一次访问文档表示时导致性能下降(图中未显示)。但是,在 Xerces 情况下,节点创建开销大约与解析期间常规 DOM 创建的性能差值相同。对于较大的文档来说,用 Xerces 延迟的前两次测试所需的总时间大致与使用带常规 DOM 构建的 Xerces 所用的时间相同。如果在非常大的文档(可能 10KB 或更大)上使用 Xerces,则延迟的节点创建似乎是一个好选择。 文档修改时间 这个测试检查系统地修改构造文档表示所需的时间,其结果在 图 3中显示。它遍历表示,删除所有单独的空白内容并且用新添加的元素封装每个非空白内容字符串。它还向包含非空白内容的原始文档的每个元素中添加一个属性。该测试试图表示经过一定范围文档修改后文档模型的性能。如遍历时间一样,修改时间比解析时间短很多。因此,对于仅单次遍历每个解析过的文档的应用程序来说,解析时间将更重要。 图 3. 文档修改时间 Java中的XML: 文档模型,第一部分:性能(5)时间:2011-01-25 IBM Dennis M. Sosnoski这次测试中 EXML 处于领先地位,但是由于在解析期间它总是废弃单独的空白内容,它才比其它模型具有性能上的优势。这意味着在测试期间没有要从 EXML 表示中进行删除的内容。 在修改性能方面,XPP 仅次于 EXML,并且与 EXML 不同,XPP 测试包含删除。Xerces DOM 和 dom4j 接近地处于中间位置,JDOM 和 Crimson DOM 模型的性能仍是最差。 文档生成时间 这个测试检查将文档表示输出成文本 XML 文档所需的时间;结果显示在 图 4中。对于不专门使用 XML 文档的任何应用程序,该步骤似乎是整体性能的一个重要部分,特别是因为将文档输出为文本所需的时间总体接近于对文档输入进行解析所需的时间。为使这些时间具有直接的可比性,该测试使用原始文档,而没有使用由前面的测试所生成的已修改文档。 图 4. 文本生成时间 文本生成时间测试表明各模型之间的差别小于前面测试中各项的差别,Xerces DOM 性能最好,但领先不多,JDOM 性能最差。EXML 的性能优于 JDOM,但是这同样是由于 EXML 废弃空白内容。 许多模型提供了控制文本输出格式的选项,并且一些选项似乎影响文本生成时间。这个测试只使用每个模型的最基本的输出格式,因此结果只显示缺省性能而不显示最好的可能性能。 文档内存大小 这个测试检查用于文档表示的内存空间。这对于使用大文档或同时使用多个较小文档的开发者来说,意义尤为重要。图 5 显示这个测试的 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |