Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jdom性能_Java_Xml_Performance_Xml Parsing_Jdom - Fatal编程技术网

Java jdom性能

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解析器,因此不会有任

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

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。这会降低系统速度,但如果你想愚弄你的系统管理员,那就去做吧。