|
内存使用比较
因为SAX和Pull不在内存中构建数据结构,所以只能在DOM(支持及不支持延迟节点扩展特性)和VTD-XML之间进行有意义的比较。为此,本节评测的是乘数,即大文件的内存使用和文档大小之间的比率(因为内存使用是大文件特别关注的问题)。(见图4)

图4 内存使用比较
浏览性能比较
本节从时延方面比较了VTD-XML和DOM(不支持延迟节点扩展特性)的浏览性能,即访问文档中每个节点所用的时间。为了浏览遍全部节点,DOM代码依靠nodeIterator接口,而VTD-XML代码调用类AutoPilot的成员方法selectElement(...)和iterate(...)。不出所料,浏览速度比解析快得多。就VTD-XML而言,浏览时间在解析时间的15%到30%之间。DOM的比例是5%到7%。这倒不是VTD-XML的浏览速度不如DOM; 区别完全在于VTD-XML的解析性能出众得多的缘故。(见表4、表5、表6)
结果分析 NOCOPY
在几年前的一次测评中,Piccolo在许多SAX实现方案当中曾被评为总分最高。这回发生了变化: 最新的 Xerces SAX解析器一举成为性能最佳的SAX分析器。另外,本文的测试结果表明,如果与Xerces SAX进行比较,XPP3性能可靠,并不落后多少。
另外值得关注的是,测试结果发现,如果文档很小(不到10KB),DOM解析性能与SAX相差的幅度不如文档很大时两者相差的幅度来得明显。对于小的XML文件,DOM的延迟节点扩展导致解析性能不如支持全部节点扩展的DOM。
不过VTD-XML的性能与其他解析器相比优势明显,可以说无可比拟。而且同样是VTD-XML,使用缓冲器重用和未使用缓冲器重用有重大区别。大大提高了内存使用效率,意味着VTD-XML可以用来处理大的XML文件。各种大小的XML文件都能得到性能方面的好处。(译自Javaworld.com)
|