性能比較
插入1000萬(wàn)條記錄陶珠,比較內(nèi)存使用大小及插入耗時(shí)。
測(cè)試機(jī)器配置
Intel(R) Core(TM) i3-4000M CPU @2.40GHz 2.40GHz
12.0GB 內(nèi)存
前置條件
go股毫,避免擴(kuò)大容量時(shí)內(nèi)存拷貝,初始化容積的大小為13333333。 ?make(map[int]int,13333333)
java岭洲,避免擴(kuò)大容量時(shí)內(nèi)存拷貝沪编,初始化容積的大小為13333333呼盆。 ?new HashMap(13333333);
避免OOM,設(shè)置jvm參數(shù) ?-Xms2048m -Xmx2048m
使用內(nèi)存的大小
go 300M
java? 800M
耗時(shí)(納秒)
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");