网站建设中添加图片链接,榆林北京网站建设,哪些网站用黑体做的,免费seo网站推广在线观看看你怎么写 if.嵌入很多层if的代码叫做“箭头代码”#xff0c;是一个anti-pattern。 这种代码会增加程序的循环复杂度 (Cyclomatic complexity)具体可以看这里#xff1a;Flattening Arrow Code这里#xff1a;总的来说#xff0c;程序里用if-else是有开销的。每次conditi…看你怎么写 if.嵌入很多层if的代码叫做“箭头代码”是一个anti-pattern。 这种代码会增加程序的循环复杂度 (Cyclomatic complexity)具体可以看这里Flattening Arrow Code这里总的来说程序里用if-else是有开销的。每次condition的判断就是一个计算但是if-else的存在增加了程序语言的表达能力提高了开发效率。如果纯粹从性能的角度看不用if-else肯定比用好。但是在某些情况下CPU可以做到让程序性能近似于没有if-else的情况。stackoverflow上有一个经典问题Why is it faster to process a sorted array than an unsorted array?现代CPU在运行到if的时候不会先判断condition然后再选择进入if-else的哪一个分支。它们真正做的是直接进入一个分支执行如果猜错则回滚此分支的操作然后换另一个分支执行。如果CPU每次都猜对就会让程序性能接近没有if-else的情形反之则会造成开销。那么如何让CPU猜对呢如果condition 大部分时间都是true少部分时间是false那么CPU 就比较好猜反之如果condition的值是一个随机值那么CPU每次就得“瞎猜”猜对的概率就会低了。当然如果你的if-else不是出现在循环里一般不会造成太大开销。分割线回答一下讨论区里的问题。因为我也不是做CPU的就当抛砖引玉。希望大家指正现代CPU运行时不是一条命令一条命令的执行而是一下读进多条命令并且对这些命令进行优化生成流水线(pipeline)。优化后的流水线的运行效率是非常高的。生成流水线也是一个耗时的工作。CPU遇到if的条件语句时根据分支预测器的结果选择跳转还是不跳转。并且把相应分支里的命令载入生成流水线。CPU同时还会并行地执行条件语句。如果对就继续执行如果错就把当前分支的流水线抛弃然后载入另一个分支生成流水线。所以如果每次都猜对程序的运行效率就会基本和没有if差不多。