有效率的迴圈 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時,便可以直接跳出迴圈了,相似的程式邏輯,卻造就不同的負擔層級,這之間的差異可能就是上百毫秒的差別,所以,在程式可讀性不被過度減損的情況下,或許這樣的迴圈寫法能直接帶給各位不錯的效能表現。
發佈留言
很抱歉,必須登入網站才能發佈留言。