ConcurrentHashMap和oscache等对象缓存有何区别
最近我做了个测试,测试结果如下:
在IBM笔记本T61下测试
启5个线程往Hashtable和ConcurrentHashMap里面写数据。每个线程并发随机写100,000个数据到Hashtable和ConcurrentHashMap里(键值是Integer),上一过程完成之后启5个线程并发随机从Hashtable和ConcurrentHashMap里(键值是Integer)读数据,每个线程读100,000条。
这一过程十次测试平均时间如下:
The average time(Run 10times) of ConcurrentHashMap is :690ms
The average time(Run 10times) of Hashtable is :834ms
结论:ConcurrentHashMap比Hashtable性能优化20.8%。
等存入过程完成之后,启100个线程并发随机从Hashtable和ConcurrentHashMap里(键值是Integer)读数据,每个线程读100,000条。
这一过程十次测试平均时间如下:
The average time(Run 10times) of concurrentHashMap is :2721
The average time(Run 10times) of Hashtable is :5870
结论:ConcurrentHashMap比Hashtable性能优化115.7%。
与大家分享下
疑问:
我理解的也可以把数据库中表以对象形式存入ConcurrentHashMap中可以看作是对象缓存吗?,那oscache等开源高速缓存只在分布式上有优势吗?比如几个JVM共用一个缓存? 请帮我解释下,谢谢!