性能比较
插入1000万条记录,比较内存使用大小及插入耗时。
测试机器配置
Intel(R) Core(TM) i3-4000M CPU @2.40GHz 2.40GHz
12.0GB 内存
前置条件
go,避免扩大容量时内存拷贝,初始化容积的大小为13333333。 make(map[int]int,13333333)
java,避免扩大容量时内存拷贝,初始化容积的大小为13333333。 new HashMap(13333333);
避免OOM,设置jvm参数 -Xms2048m -Xmx2048m
使用内存的大小
go 300M
java 800M
耗时(纳秒)
go put map,duration:2655163300 ns
java put map,duration:1543360398 ns
代码
golang
t1:=time.Now();
m1:=make(map[int]int,13333333)
for i:=0;i<10000000;i++{
m1[i]=i
}
t2:=time.Now();
fmt.Printf("put map,duration::%d ns\n",t2.Sub(t1))
java
System.gc();
long t1 = System.nanoTime();
Map map = new HashMap<>(13333333);
for(int i=0;i<10000000;i++){
map.put(i, i);
}
long t2 = System.nanoTime();
System.out.println("put map,duration:"+(t2 - t1)+" ns");