opencms7.5

[/code]// 系统编码
String systemEncoding = (new OutputStreamWriter(new ByteArrayOutputStream())).getEncoding();

HashMap vs FastHashMap:原文参考http://frenchmay.iteye.com/blog/226784
[code="java"]
public class FastHashMap extends HashMap {
protected HashMap map = null;
protected boolean fast = false;
public FastHashMap() {
super();
this.map = new HashMap();
}
}
FastHashMap继承于HashMap,存储由HashMap实现的,通过fast来设置是否是以快速模式执行.可以初步认为FashHashMap是HashMap的一个代理.



public Object get(Object key) {
if (fast) {
// get方法的实现是线程安全的
return (map.get(key));
} else {
// 对整个map对象同步
synchronized (map) {
return (map.get(key));
}
}
}
所以FastHashMap在get速度上比HashMap快!



public Object put(Object key, Object value) {
if (fast) {
synchronized (this) {
// 克隆一个map,再在map上操作,再替换map;在替换map前所有对象都读取map;
HashMap temp = (HashMap) map.clone();
Object result = temp.put(key, value);
map = temp;
return (result);
}
} else {
synchronized (map) {
return (map.put(key, value));
}
}
}


做的测试是在slow模式下的FastHashMap和hashmap在单线程访问的情形下,读/取50000
个long类型的测试举例.


结果是

Result:

HashMap put 50000 Object using1.021s

FastHashMap put 50000 Object using1.221s

HashMap get 50000 Object using0.561s

FastHashMap get 50000 Object using0.04s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值