Java jdom性能
我目前正在使用本机Java XML处理库(Xerces)。我不能使用任何sax解析器,因为我需要随机访问xml节点。我发现在解析XML文件时CPU的使用率达到了100%。有大量的小尺寸(1-10kb)像这样处理-Java jdom性能,java,xml,performance,xml-parsing,jdom,Java,Xml,Performance,Xml Parsing,Jdom,我目前正在使用本机Java XML处理库(Xerces)。我不能使用任何sax解析器,因为我需要随机访问xml节点。我发现在解析XML文件时CPU的使用率达到了100%。有大量的小尺寸(1-10kb)像这样处理- while(hasFile){ processXMlfile(hasFile.next); } 在processXMlfile()中,我正在构建解析和处理文件 如果我转到JDOM库,我会获得任何性能优势吗 瓶颈可能是XML解析,JDOM可能会在幕后使用相同的XML解析器,因此不会有任
while(hasFile){
processXMlfile(hasFile.next);
}
在processXMlfile()中,我正在构建解析和处理文件
如果我转到JDOM库,我会获得任何性能优势吗 瓶颈可能是XML解析,JDOM可能会在幕后使用相同的XML解析器,因此不会有任何区别
解析大量小文件时的一个关键因素是避免解析器初始化成本。对所有文件重复使用相同的XML解析器实例。JDOM 2.0.0解决了许多性能问题。其中之一与XML文件的“紧密循环”处理直接相关 看看: 你应该这样做:
SAXBuilder saxbuilder = new SAXBuilder();
saxbuilder.setVariousConfigurations()
SAXEngine saxengine = saxbuilder.buildEnine();
while(hasfile) {
processXML(saxengine, nextfile);
}
在JDOM 2.0.0中使用SAXEngine概念将完全消除SAX解析基础设施的设置。设置时间占整个过程的很大比例
虽然您可能仍在以100%的速度运行,但yu会发现您的吞吐量可能会增加一倍以上。谢谢Michael。在重新使用实例后,虽然CPU使用率保持在@100%,但吞吐量已经大大提高(从大约40-50个文件提高到大约200个文件)。100%的CPU使用率肯定是一件好事,为什么您想要更少的CPU使用率呢?我不会……有时系统管理员并不认为这是一件好事。对他们来说,这是一个危险的情况。如果你想让CPU使用率低于100%,你就必须安排做更多的I/O。这会降低系统速度,但如果你想愚弄你的系统管理员,那就去做吧。