對java 提供的兩個Map 進行了性能測試發現效果還可以
萬個key的Map 查找 起來也不是很慢
大概
毫秒
還打算自己手工做些性能優化
將不同前綴的KEY分開到幾個小MAP裡 發現性能沒有改觀
納悶中
分開到幾個小MAP裡
然後小的裡面還可以再分
分分分
形成一個按字母檢索樹
突然想起
Java Pro 上有篇文章裡說過Map系列的內置 性能優化方式
好象就是和我說的這種思想是一致的
查找資料一看(x?ID=
&page=
)
過真如此
哈哈
不過上次看了印象不深刻
這次自己想出來了
印象當真深刻的很
同時也證明了英雄所見略同(呵呵)
/**
* Map 系列性能測試
*/
import java
util
*;
public class MapTest
{
public static void main(String ags[]){
test
();
System
out
println(
);
test
();
}
public static void test
(){
Map m = new HashMap();
long t
= System
currentTimeMillis();
for (int i =
; i <
; i++)
{
m
put(
aa
bb
to
pub
+i+
asfsdfVO
i+
value
);
}
long t
= System
currentTimeMillis() ;
System
out
println(t
t
);;
//System
out
println(m
get(
key
));
for (int i =
; i <
; i++)
{
m
get(
aa
bb
to
pub
+i+
asfsdfVO
);
}
long t
= System
currentTimeMillis() ;
System
out
println(t
t
);
}
public static void test
(){
Map m = new HashMap();
m
put(
aa
bb
ao
new HashMap());
m
put(
aa
bb
do
new HashMap());
m
put(
aa
bb
wo
new HashMap());
m
put(
aa
bb
po
new HashMap());
m
put(
aa
bb
io
new HashMap());
m
put(
aa
bb
oo
new HashMap());
m
put(
aa
bb
bo
new HashMap());
m
put(
aa
bb
to
new HashMap());
m
put(
aa
bb
yo
new HashMap());
m
put(
aa
bb
ro
new HashMap());
long t
= System
currentTimeMillis();
for (int i =
; i <
; i++)
{
for (int k =
; k <
; k++) //有
個模塊
比較
個模塊概率
if(
aa
bb
to
pub
headerVO
startsWith(
aa
bb
to
));
//下面假設上邊比較結果為
aa
bb
to開頭
for(int j =
; j <
; j++) //每個模塊裡有
個
((Map)m
get(
aa
bb
to
))
put(
aa
bb
to
pub
+j+
asfsdfVO
value
);
}
long t
= System
currentTimeMillis() ;
System
out
println(
錄入時間為
+(t
t
));;
//System
out
println(m
get(
key
));
for (int i =
; i <
; i++)
{
for (int k =
; k <
; k++) //有
個模塊
比較
個模塊概率
if(
aa
bb
to
pub
asfsdfVO
startsWith(
aa
bb
to
));
for(int j =
; j <
; j++)
((Map)m
get(
aa
bb
to
))
get(
aa
bb
to
pub
+j+
asfsdfVO
);
}
long t
= System
currentTimeMillis() ;
System
out
println(
查找時間為
+(t
t
));
}
};
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19510.html