对java 提供的两个Map 进行了性能测试发现效果还可以万个key的Map 查找 起来也不是很慢大概毫秒
还打算自己手工做些性能优化将不同前缀的KEY分开到几个小MAP里 发现性能没有改观纳闷中
分开到几个小MAP里然后小的里面还可以再分分分分形成一个按字母检索树
突然想起Java Pro 上有篇文章里说过Map系列的内置 性能优化方式好象就是和我说的这种思想是一致的
查找资料一看(x?ID=&page=)过真如此哈哈不过上次看了印象不深刻这次自己想出来了印象当真深刻的很同时也证明了英雄所见略同(呵呵)
/**
* Map 系列性能测试
*/
import javautil*;
public class MapTest
{
public static void main(String ags[]){
test();
Systemoutprintln();
test();
}
public static void test(){
Map m = new HashMap();
long t = SystemcurrentTimeMillis();
for (int i = ; i < ; i++)
{
mput(aabbtopub+i+asfsdfVOi+value);
}
long t = SystemcurrentTimeMillis() ;
Systemoutprintln(tt);;
//Systemoutprintln(mget(key));
for (int i = ; i < ; i++)
{
mget(aabbtopub+i+asfsdfVO);
}
long t = SystemcurrentTimeMillis() ;
Systemoutprintln(tt);
}
public static void test(){
Map m = new HashMap();
mput(aabbaonew HashMap());
mput(aabbdonew HashMap());
mput(aabbwonew HashMap());
mput(aabbponew HashMap());
mput(aabbionew HashMap());
mput(aabboonew HashMap());
mput(aabbbonew HashMap());
mput(aabbtonew HashMap());
mput(aabbyonew HashMap());
mput(aabbronew HashMap());
long t = SystemcurrentTimeMillis();
for (int i = ; i < ; i++)
{
for (int k = ; k < ; k++) //有个模块比较个模块概率
if(aabbtopubheaderVOstartsWith(aabbto));
//下面假设上边比较结果为 aabbto开头
for(int j = ; j < ; j++) //每个模块里有个
((Map)mget(aabbto))put(aabbtopub+j+asfsdfVOvalue);
}
long t = SystemcurrentTimeMillis() ;
Systemoutprintln(录入时间为+(tt));;
//Systemoutprintln(mget(key));
for (int i = ; i < ; i++)
{
for (int k = ; k < ; k++) //有个模块比较个模块概率
if(aabbtopubasfsdfVOstartsWith(aabbto));
for(int j = ; j < ; j++)
((Map)mget(aabbto))get(aabbtopub+j+asfsdfVO);
}
long t = SystemcurrentTimeMillis() ;
Systemoutprintln(查找时间为+(tt));
}
};