(1) 简单 put 操作的时间对比
HashMap | ConcurrentHashMap |
当 put 操作循环 10 万次时,得到 time = 344ms, | 当 put 操作循环 10 万次时,得到 time =281ms, |
循环 50 万次时,得到 time = 1657 ms, | 循环 50 万次时,得到 time = 1376 ms, |
循环 100 万次时,得到 time = 4094 ms 。 | 循环 100 万次时,得到 time = 3625 ms, |
(2) put 操作的最多个数对比(即内存溢出)
HashMap | ConcurrentHashMap |
运行程序,内存初值为: 846M ,内存峰值为: 931M , put 计数 =1030604 | 运行程序,内存初值为: 847M ,内存峰值为: 931M , put 计数 =1,030,238
|
(3) HashMap 与 ConcurrentHashMap 多线程操作的测试
HashMap | ConcurrentHashMap |
当 put 线程数量为 100 , get 线程数量为 90 时, HashMap 就开始出现性能下降的情形, CPU 使用率达到 45% 左右,且 put 、 get 的个数要明显少于 ConcurrentHashMap 的个数 | 使用 ConcurrentHashMap 时,则线程很稳定, CPU 使用率不超过 12% 时。 |