請簡述以下兩個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次邏輯判斷,並且打斷了循環“流水線”作業,使得編譯器不能對循環進行優化處理,降低了效率。

 

優點:循環的效率高

缺點:程序不簡潔

看到網絡上還有一種回答: 

前者:
優點:程序簡潔
條件判斷出現在For里面,意味着,即使我在dosomething()或dootherthing()這2個函數中改變了condition的值,For循環也能正確執行我的意圖,因為它在每次循環中都會重新檢測conditon的值並針對condition的值做不同動作,所謂以不變應萬變,這是難能可貴的.   
缺點:多執行了N-1次邏輯判斷,並且打斷了循環“流水線”作業,使得編譯器不能對循環進行優化處理,降低了效率。
如果condition一直未曾改變,我們可憐的if必須每次循環都判斷一下condition的真假.犧牲了運行時效率.

后者:
優點:循環的效率高。只進行一次判斷,運行時效率高.適合那種condition的值不會改變的情況.
缺點:由於只在一開始進行一次判斷,所以失去的改變condition的值的機會,也就是說,即使我在dosomething()中改變了condition的值為false,這個程序也不會改變它的判斷,它依然執行着dosomething()的循環.我們不能隨時更換我們需要進行的動作。這是犧牲了彈性。

N較大時,建議采用后面這種寫法,由於前者老要進行邏輯判斷,打斷了循環“流水線”作業,使得編譯器不能對循環進行優化處理,降低了效率。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM