java系统优化中的位操作优化 4年前

本博客来自我的新书《Java系统性能优化》的第四章15节,也欢迎阅读我的的经典书 《Spring Boot 2 精髓 》

4.15 位运算

Java位运算非常高效,可以使用位运算代替部分算数运算以提高性能,比如,最常用的判断奇数

int  a = 111;
System.out.print((a & 1)==1);

乘以2或者除以2,也可以使用位运算

int  a = 111;
//右移1位,相当于除以2
System.out.println(a>>1);
//左移1位,相当于乘以2
System.out.println(a<<1);

在JAVA8的Integer里,也使用了位运算来实现int转字符串。

//r=i-q*10 优化为如下
r = i - ((q << 3) + (q << 1));
//q=i/10,优化为如下
q = (i * 52429) >>> (16+3);

这里(i * 52429) >>> (16+3) 相当于i*0.1000000003,因此对于i较小的数据,可以认为俩着是相等的。

对比直接使用i/10 和 (i * 52429) >>> (16+3),性能如下

Benchmark                   Mode  Samples  Score  Score error  Units
c.i.c.c.BitTest2.bit        avgt        5  0.669        0.031  ns/op
c.i.c.c.BitTest2.general    avgt        5  1.251        0.560  ns/op
image
水色深瞳望星坠
正因为这样,我才决定任何时候都要尽全力享受人生,这样的话,无论什么时候死去,都是最幸福的一生了吧
2
发布数
0
关注者
916
累计阅读

热门教程文档

10.x
88小节
Next
43小节
Spring Cloud
8小节
C#
57小节
React
18小节
广告