java性能:DOMXPath与键值查找
我正在寻求一些关于避免潜在性能问题的设计建议
简短版本:一般来说,使用XPath查询DOM比查询两个HashMap慢多少
更长的mpre特定版本:
我正在创建一个Java应用程序,作为启动的一部分,它必须读取XML文件。该文件最多可以配置8200个属性,如下面的XML所示。理论上最多有100个映射元素,每个元素有2个属性。每个元素包含1到40个具有属性对的元素。所以总共有(40*2)*100+200个文本属性
<mapping source="A" target="B">
<field fname="" tname=""/>
<field fname="" tname=""/>
<field fname="" tname=""/>
<field fname="" tname=""/>
</mapping>
我想到了将信息提取到两个哈希图中,然后在程序执行期间使用它们进行查找。我只对查找映射“source”感兴趣,我将从中查找相应的“target”,然后使用任何子“fname”来查找相应的“tname”
我只是想知道,每次我想要一些信息时,使用XPath和查询DOM会比创建(例如)一个“映射类”的hashmap慢多少,它本身包含fname/tname对的hashmap
提前感谢你的建议,希望这是有意义的
凯文
# 1 楼答案
你当然会把实现隐藏在一个合适的接口后面,不管它是什么
除此之外,我很确定HashMaps在这种情况下的性能会优于XPath,但是因为您的接口没有显示实现,所以您可以随意更改它
# 2 楼答案
过早优化是(几乎)万恶之源
你的代码慢吗
->;不,就这样吧
->;是:测量并修复瓶颈(如果发现)
但根据我的经验:在大多数情况下,XPath是在DOM的基础上实现的。这是某种内存开销
我相信HashMap会更快,消耗更少的内存