java中map的clear和new性能对比
博客专区 > 登琼 的博客 > 博客详情
java中map的clear和new性能对比
登琼 发表于2年前
java中map的clear和new性能对比
  • 发表于 2年前
  • 阅读 1630
  • 收藏 0
  • 点赞 1
  • 评论 2

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: java中map的clear和new性能对比

我再上一篇hashMap使用的优化文章的时候想过map的性能问题,没有仔细探究,今天有想到一个问题。

我们在使用HashMap的时候是用clear好呢,还是直接new一个比较好!

然后就写了点代码进行实验比较

Map<String, Object> map = new HashMap<String, Object>();
		for (int i = 0; i < 100000; i++) {
			map.put(i+"", 1);
		}
		
		long start = System.currentTimeMillis();
		map.clear();
		map.put("headerId", 1);
		for (int i = 0; i < 100000; i++) {
			map.put(i+"", 1);
		}
		long end = System.currentTimeMillis();
		System.out.println("运行时间:" + (end - start) + "毫秒");
		
		long start2 = System.currentTimeMillis();
		map = new HashMap<String, Object>();
		map.put("headerId", 1);
		for (int i = 0; i < 100000; i++) {
			map.put(i+"", 1);
		}
		long end2 = System.currentTimeMillis();
		System.out.println("运行时间:" + (end2 - start2) + "毫秒");

输出结果:

    运行时间:37毫秒

    运行时间:45毫秒

虽然时间差比较小,但事实证明如果后期大数据量的话还是clear效率比较高,如果是小数据量还是new效率高,1w条左右!

共有 人打赏支持
粉丝 4
博文 45
码字总数 7938
评论 (2)
pangsscn
这代码明显有问题了....
登琼

引用来自“pangsscn”的评论

这代码明显有问题了....
理论上clear慢些,因为clear是循环元素设置成null,但是在某个数量范围内,clear却花的时间更短,我想可能是在for中map的size多次不满足长度,map扩长运算导致的。
小弟才疏学浅,望大神赐教。
×
登琼
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: