請簡述如下兩個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

相關文章
相關標籤/搜索