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