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,896评论 18 399
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 5,385评论 0 3
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,348评论 0 33
  • 近期,杨紫晒出拍戏前后对比图,脸从圆嘟嘟瘦到细长细长的。一直致力于减肥事业的小猴紫表示跟14斤肉,拜拜咯~ 哈哈,...
    潮流一起说阅读 3,573评论 0 0
  • 外面下着小雨,我又哭了,只因为一条短信:明天早上记得吃面条鸡蛋。你每年都会提前一天发同样的话给我,基本没有遗忘过。...
    oukoyi阅读 1,027评论 0 0