我目前正在使用本机 Java XML 处理库 (Xerces)。我不能使用任何 sax 解析器,因为我需要随机访问 xml 节点。我发现在解析 XML 文件时 CPU 使用率达到 100%。我正在处理大量的小尺寸(1-10kb)-
while(hasFile){
processXMlfile(hasFile.next);
}
在 processXMlfile() 我正在构建解析和处理文件。
如果我迁移到 JDOM 库,我会获得任何性能优势吗?
我目前正在使用本机 Java XML 处理库 (Xerces)。我不能使用任何 sax 解析器,因为我需要随机访问 xml 节点。我发现在解析 XML 文件时 CPU 使用率达到 100%。我正在处理大量的小尺寸(1-10kb)-
while(hasFile){
processXMlfile(hasFile.next);
}
在 processXMlfile() 我正在构建解析和处理文件。
如果我迁移到 JDOM 库,我会获得任何性能优势吗?
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% 运行,但您会发现您的吞吐量可能会增加一倍以上....
瓶颈可能是 XML 解析,而 JDOM 可能会在后台使用相同的 XML 解析器,因此不会有任何区别。
解析大量小文件时的一个关键因素是避免解析器初始化成本。对所有文件重复使用相同的 XML 解析器实例。