golang map和java HashMap性能對比

性能比較

插入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");

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,767評論 18 399
  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,518評論 0 3
  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,775評論 0 33
  • 近期,楊紫曬出拍戲前后對比圖,臉從圓嘟嘟瘦到細長細長的。一直致力于減肥事業的小猴紫表示跟14斤肉,拜拜咯~ 哈哈,...
    潮流一起說閱讀 559評論 0 0
  • 外面下著小雨,我又哭了,只因為一條短信:明天早上記得吃面條雞蛋。你每年都會提前一天發同樣的話給我,基本沒有遺忘過。...
    oukoyi閱讀 152評論 0 0