今天看jdk源码,在ConcurrentHashMap中,发现以下代码
!(loadFactor > 0)
很显然等价于loadFactor <= 0 ,但为何Doug Lea大神要这么写呢?难道jvm中,算loadFactor > 0之后取反比直接算loadFactor <= 0 更快?
loadFactor <= 0是不是分三步
1、boolean temp1 = loadFactor < 0
2、boolean temp2 = loadFactor == 0
3、boolean result = temp1 & temp2
而!(loadFactor > 0) 只分两步
1、boolean temp1 = loadFactor > 0
2、boolean result = !temp1
因为少算了一步,所以更快?有没有大神来分析一下
!(loadFactor > 0)
很显然等价于loadFactor <= 0 ,但为何Doug Lea大神要这么写呢?难道jvm中,算loadFactor > 0之后取反比直接算loadFactor <= 0 更快?
loadFactor <= 0是不是分三步
1、boolean temp1 = loadFactor < 0
2、boolean temp2 = loadFactor == 0
3、boolean result = temp1 & temp2
而!(loadFactor > 0) 只分两步
1、boolean temp1 = loadFactor > 0
2、boolean result = !temp1
因为少算了一步,所以更快?有没有大神来分析一下