请简述如下两个for 循环的优缺点

 

今天笔试时候遇到一个问题,找到类似的。网络

for (i=0; i<N; i++)
{
    if (condition)
        DoSomething();
    else
        DoOtherthing();
}
if (condition) { for (i=0; i<N; i++) DoSomething(); } else { for (i=0; i<N; i++) DoOtherthing(); }

 

优势:程序简洁函数

缺点:多执行了N-1次逻辑判断,而且打断了循环“流水线”做业,使得编译器不能对循环进行优化处理,下降了效率。优化

 

优势:循环的效率高spa

缺点:程序不简洁code

看到网络上还有一种回答: blog

前者:
优势:程序简洁
条件判断出如今For里面,意味着,即便我在dosomething()或dootherthing()这2个函数中改变了condition的值,For循环也能正确执行个人意图,由于它在每次循环中都会从新检测conditon的值并针对condition的值作不一样动做,所谓以不变应万变,这是难能难得的.   
缺点:多执行了N-1次逻辑判断,而且打断了循环“流水线”做业,使得编译器不能对循环进行优化处理,下降了效率。
若是condition一直不曾改变,咱们可怜的if必须每次循环都判断一下condition的真假.牺牲了运行时效率.

后者:
优势:循环的效率高。只进行一次判断,运行时效率高.适合那种condition的值不会改变的状况.
缺点:因为只在一开始进行一次判断,因此失去的改变condition的值的机会,也就是说,即便我在dosomething()中改变了condition的值为false,这个程序也不会改变它的判断,它依然执行着dosomething()的循环.咱们不能随时更换咱们须要进行的动做。这是牺牲了弹性。
编译器

N较大时,建议采用后面这种写法,因为前者老要进行逻辑判断,打断了循环“流水线”做业,使得编译器不能对循环进行优化处理,下降了效率。it

相关文章
相关标签/搜索