针对java短路运算符的性能优化

旧城冷巷雨未停 提交于 2020-08-15 01:49:08

  提到性能优化,可能好多人都会觉得很是高大上。都会涉及到好多高深的底层机制。

  可是你知道吗,我们日常的简单编码也能做到性能优化的哦。

  是有点不相信吗?

  那往下看吧。

  今天就来说说针对java短路运算符的性能优化。

  什么是java短路运算符

  java中的短路运算符指的是“&&”和“||”这两个运算符。

  为什么叫短路运算符呢,因为这两个运算符有短路的功能。

  怎么个短路法呢?

  当“&&”符左边的表达式结果为false时,则不再执行右边的表达式。因为不需要执行了,左边表达式为false已经决定了整个表达式只能为false了。

  当“||”左边的表达式结果为true时,则不再执行右边的表达式。一样是因为不需要执行了,因为左边表达式为true已经决定了整个表达式为true。

  性能优化

  今天要说的针对短路运算符的性能优化其实就是针对上面说的短路的特点来做的。

  具体怎么做呢,我们来先看个例子。

  我定义了两个方法conditionTrue和conditionFlase。

  conditionTrue会返回true,而conditionFlase会返回false。

  为了能一会演示能体现出效果来,两个方法内都做了一个10毫秒的sleep。

  然后在andTest1和andTest2中对都调用了conditionTrue和conditionFlase这两个方法,并做了“&&”运算。唯一区别就是调用conditionTrue和conditionFlase这两个方法的先后顺序不同。

  然后在main方法中分别对andTest1和andTest2循环调用了100次,并计算了耗时,想知道结果吗?

  看到结果了吧,返回结果为true的方法放在“&&”前面的耗时是返回结果为false的方法放在“&&”前面的耗时的两倍。

  那我们针对做“&&”运算的优化方案是不是有了呢。

  那就是把返回结果为false的方法或表达式放在“&&”前面。

  可能有的同学要说了,实际业务中哪有一个方法恒返回false的呢?

  的确,如果横返回false,那都不用做判断了。

  这里我们就要考虑概率了。根据实际业务等综合去考虑要使用“&&”去运算的多个表达式返回false的概率,概率大的放在“&&”的前面。这样就能做到一定的优化了。

  可能又有同学要说了。这才几毫米,还是你做了sleep的效果。

  redis大家知道吧,为什么很多项目在用呢。有很大的一个原因就是他把数据库查询的一般毫秒级耗时降到了纳秒级。

  所以不要小看几毫秒,性能优化都是这么抠出来的。

  针对“&&”的优化方案有了,那针对“||”的优化方案想必大家自己也能做出来了吧。

  要想做到java的性能优化,需要更多的了解java核心技术,可以看看这么书哦。郑州人流医院哪家好:http://jbk.39.net/yiyuanzaixian/sysdfkyy/郑州做无痛人流多少钱:http://jbk.39.net/yiyuanzaixian/sysdfkyy/郑州妇科医院那里好:http://jbk.39.net/yiyuanzaixian/sysdfkyy/

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!