文档章节

java中map的clear和new性能对比

登琼
 登琼
发布于 2016/02/16 18:28
字数 245
阅读 1840
收藏 0

我再上一篇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条左右!

© 著作权归作者所有

共有 人打赏支持
登琼
粉丝 3
博文 46
码字总数 8100
作品 0
广州
程序员
加载中

评论(2)

登琼
登琼

引用来自“pangsscn”的评论

这代码明显有问题了....
理论上clear慢些,因为clear是循环元素设置成null,但是在某个数量范围内,clear却花的时间更短,我想可能是在for中map的size多次不满足长度,map扩长运算导致的。
小弟才疏学浅,望大神赐教。
pangsscn
pangsscn
这代码明显有问题了....
ThreadLocal 类 的源码解析以及使用原理

1、原理图说明      首先看这一张图,我们可以看出,每一个Thread类中都存在一个属性 ThreadLocalMap 成员,该成员是一个map数据结构,map中是一个Entry的数组,存在entry实体,该实体包...

小勇DW3
08/13
0
0
深入JDK源码之ThreadLocal类

学习JDK中的类,首先看下JDK API对此类的描述,描述如下:该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程...

陶邦仁
2015/03/26
0
6
JVM client模式和Server模式的区别

这里向大家描述一下JVM client模式和Server模式两者的区别和联系,JVM如果不显式指定是-Server模式还是-client模式,JVM能够根据下列原则进行自动判断(适用于Java5版本或者Java以上版本)。...

SeanCai
2014/04/12
0
0
Map迭代过程中remove引发的java.util.concurrentmodificationexception

唉,基础还是不过硬,又在博客记录下一个小问题的解决思路。先贴出出错的代码,大家看看哪里会出问题: [java] view plain copy // 定义的一个map常量 private static final Map<AlarmInfo, ...

onedotdot
2017/10/31
0
0
Java序列化与JSON序列化大比拼

一、背景 有项目需要传输Map结构的数据,有人倾向用Java序列化来做,有人倾向用JSON的序列化来做。所以我们还是比比吧。 Java观点:Object2Object,使用时简单快速。 JSON观点:JSON格式与语...

NoahX
2013/03/10
0
20

没有更多内容

加载失败,请刷新页面

加载更多

Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
30分钟前
1
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
46分钟前
4
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
3
0
Redis性能问题排查解决手册

一、性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息。通过这些信息来分析文章后面提到的一些性能指标。 nfo命令输出的数据可...

IT--小哥
昨天
1
0
mixin混入

①新建mixin.js文件 const mixin = { methods: { /** * 分页公共方法 */ handleSizeChange(val) { this.pageData.size = val; this.query(); }, hand......

不负好时光
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部