golang map和java HashMap性能对比
彭强兵 · · 2725 次点击 · · 开始浏览性能比较
插入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");
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
性能比较
插入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");