索引
文章
《java高并发程序设计 第2版》154-157页
新得
这个章节作者谈了一些自己对性能的思考,谈及性能评估的复杂,空间复杂度、时间复杂度、具体使用场景。评估的维度很多,绝不是按某一个单一标准可以言明的。
作者在这里举了一个例子,使用的是HashMap、ConcurrentHashMap、Collections.synchronizedMap(new HashMap)三种Map对象。性能测试工具是JMH(Java Microbenchmark Harness)。测试的内容是这三种Map对象的size()方法和get()方法。我在此作以记录。
下面数据的测试代码如图
jdk7下测试
其中加锁的HashMap在线程增加时,因竞争增加,性能出现了下降。而且可以看出,ConcurrentHashMap的size()方法的性能,在单线程时竟然不如加锁的HashMap。
jdk8下测试
升级到jdk8之后变化最明显的当属ConcurrentHashMap的size()方法,性能较之前直接翻了40+倍。
原创文章,作者:geekgao,如若转载,请注明出处:https://www.geekgao.cn/archives/2620