使用: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的表現似乎已經倒退多年 –