当前位置: 首页 > 后端技术 > Node.js

多条件短路优化测试

时间:2023-04-03 12:15:18 Node.js

原文地址:多条件短路优化测试什么是多条件短路类型如if(A&&B&&C)由多个条件组成的逻辑语句,通过调整各个因素的顺序,利用Shortcircuit实现执行效率的优化。知乎:逻辑运算符特有的短路效应是什么?没有证据表明实景模拟测试首先定义三个逻辑单元:constconditionA=()=>{returnMath.random()>0.25;?}constconditionB=()=>{returnMath.random()>0.5;}constconditionC=()=>{returnMath.random()>0.75;}显然,以上三种逻辑,返回true的概率是逐渐递减的。我们将其用作实验样本。constBenchmark=require('benchmark');constsuite=newBenchmark.Suite;suite.add('A||B||C',function(){if(conditionA()||conditionB()||conditionC()){//AorBorC,把正确概率高的放在最前面}}).add('C||B||A',function(){if(conditionC()||conditionB()||conditionA()){//CorBorA,小概率为真放在最前面}}).add('A&&B&&C',function(){if(conditionA()&&conditionB()&&conditionC()){//AandBandC,大概率为真,先放}}).add('C&&B&&A',function(){if(conditionC()&&conditionB()&&conditionA()){//CandBandA,小概率为真放在最前面}}).on('cycle',function(event){console.log(String(event.target));}).on('complete',function(){console.log('Fastestis'+this.filter('fastest').map('name'));}).run({'async':true});上面的代码应该比较容易理解,测试||`&&`两种情况下,不同排序顺序对执行效率的影响,如果实在改不了,多看几遍代码。结果:一个||乙||Cx29,734,965ops/sec±1.42%(88次运行采样)C||乙||Ax19,663,159ops/sec±0.57%(90次运行采样)A&&B&&Cx19,865,675ops/sec±0.63%(89次运行采样)C&&B&&Ax30,679,108ops/sec±0.52%(88次运行采样)结论:多个||conditions,先写条件为真概率大的,效率更高。对于多个&&条件,先写条件为真概率小的条件效率更高。为什么?||遇到true会短路,反之亦然,&&遇到false也会短路。你明白吗?