使用:Java的1.5/1.1.3 JDOM/Jaxen的1.1.1JDOM XPATH何时比使用getChildren寻找元素更快?
我写的测试是确认的信念,在JDOM使用预编译XPATH是不是通过子元素迭代更快。相反,我发现XPATH比遍历子列表慢4到5倍,执行字符串比较以及寻找我想要的内容。
对于情况下,我的XPath是一样的东西:
/root/quote/vehicle[@id = 'some vehicle']/coverage[@id = 'some coverage']/code";
和实际评价被定时(在try/catch块):
String element = path.valueOf(doc).getText();
而替换的搜索是:
List<Element> vehicleList = doc.getRootElement()
.getChild("quote")
.getChildren("vehicle");
for(Element vehElement : vehicleList)
if(vehElement.getAttributeValue("id").equals("some vehicle")){
List<Element> coverageList = ele.getChildren("coverage");
for(Element covElement : coverageList){
if(covElement.getAttributeValue("id").equals("some coverage")){
element = covElement.getChild("CoverageType").getText();
break;
}
}
}
奇怪的是,同时使用XPATH方法的运行时间要慢得多,它是在1000它最稳定操作。
第一个示例在.29 ms + - 0.01ms附近完成。
第二个示例在.013ms和.002ms之间的任何位置完成。
考虑到足够长的测试,两种方法的运行时间都很短。
XPath对我来说更容易编写,但getChild路由看起来更灵活,但有点冗长。这仍然是我不介意为提高速度而进行的交易。这也是事实,甚至100次迭代是快得令人难以置信,所以这可能是学术...
最后,我想知道:
是否有这样一个场景,JDOM XPath是比其他风格更快显示?
JDom XPath(在任何版本的Java/JDOM中)带来了什么好处?
你已经回答了你自己的问题。 – skaffman
我一直希望得到关于这个问题的权威评论:)我对JDOM比较陌生。 – JHarnach
jaxen的表现似乎已经倒退多年 –