有效率的迴圈 Efficient C Loop Structure

有時候小小的習慣可以造就好的程式效率,做到基本的Optimization。

一般我們在寫迴圈時,總是採用以下的寫作方式

for (int i = 0; i < bound; i++)

但其實從assembly level來看,運用指令集的幫助,我們如果讓 i 直接做是否為零的判斷,這樣就可以少掉多一個CMP (cmpare),在多重迴圈的操作下,前前後後就可以少掉不少指令運作的負擔。

我們改成以下的樣子

i = bound;

while (i–) {

/// do something

}

如此當 i 遞減到0時,便可以直接跳出迴圈了,相似的程式邏輯,卻造就不同的負擔層級,這之間的差異可能就是上百毫秒的差別,所以,在程式可讀性不被過度減損的情況下,或許這樣的迴圈寫法能直接帶給各位不錯的效能表現。

發佈留言