周末在家测试了hashmap和treemap的性能,分别产生指定数目的随机数,然后依次放到不同的容器中,记录一下放之前和放之后的时间。然后再根据产生的随机数,在容器中中读一把,记录一下读之前和读之后的时间。
hashmap的测试代码如下:
treemap的代码很类似,只有第二行HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();变成了TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>();测试出来的结果应该是hashmap完胜treemap。
hashmap的结果
[img]http://dl.iteye.com/upload/attachment/0066/1404/bb144adf-2890-3877-a63c-a29cf09fb90c.jpg[/img]
treemap的结果
[img]http://dl.iteye.com/upload/attachment/0066/1406/59dafdc6-1c53-391a-a943-d1ef65b330d5.jpg[/img]
hashmap的测试代码如下:
List<Integer> keys = new ArrayList<Integer>(S_Len);
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
{
Random random = new Random();
for(int i=0;i<S_Len;i++){
int key = random.nextInt();
keys.add(key);
}
}
{
Date date = new Date();
for(Integer key:keys){
map.put(key, key);
}
System.out.println("put time=" + (new Date().getTime()-date.getTime()));
}
{
Date date = new Date();
for(Integer key:keys){
map.get(key);
}
System.out.println("get time=" + (new Date().getTime()-date.getTime()));
}
treemap的代码很类似,只有第二行HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();变成了TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>();测试出来的结果应该是hashmap完胜treemap。
hashmap的结果
[img]http://dl.iteye.com/upload/attachment/0066/1404/bb144adf-2890-3877-a63c-a29cf09fb90c.jpg[/img]
treemap的结果
[img]http://dl.iteye.com/upload/attachment/0066/1406/59dafdc6-1c53-391a-a943-d1ef65b330d5.jpg[/img]