2

我目前正在使用本机 Java XML 处理库 (Xerces)。我不能使用任何 sax 解析器,因为我需要随机访问 xml 节点。我发现在解析 XML 文件时 CPU 使用率达到 100%。我正在处理大量的小尺寸(1-10kb)-

while(hasFile){
processXMlfile(hasFile.next);
}

在 processXMlfile() 我正在构建解析和处理文件。

如果我迁移到 JDOM 库,我会获得任何性能优势吗?

4

2 回答 2

5

JDOM 2.0.0 解决了许多性能问题。其中之一与 XML 文件的“紧密循环”处理直接相关。

看一下:

http://hunterhacker.github.com/jdom/jdom2/apidocs/org/jdom2/input/sax/package-summary.html

您应该执行以下操作:

SAXBuilder saxbuilder = new SAXBuilder();
saxbuilder.setVariousConfigurations()
SAXEngine saxengine = saxbuilder.buildEnine();

while(hasfile) {
  processXML(saxengine, nextfile);
}

在 JDOM 2.0.0 中使用 SAXEngine 概念将完全消除 SAX 解析基础结构的设置。该设置时间占整体处理的巨大比例。

虽然您可能仍以 100% 运行,但您会发现您的吞吐量可能会增加一倍以上....

于 2012-04-12T09:49:11.963 回答
3

瓶颈可能是 XML 解析,而 JDOM 可能会在后台使用相同的 XML 解析器,因此不会有任何区别。

解析大量小文件时的一个关键因素是避免解析器初始化成本。对所有文件重复使用相同的 XML 解析器实例。

于 2012-04-12T08:39:23.587 回答