從PTT上看到別人的小技巧,和大家分享一下。
若程式裡的迴圈是用來計數的話
ex.
for(i = 0; i <= n; i++)
s = s + i;
可以做以下的修改
for(i = n; i; i--)
s = s + i;
如此,編譯成組合語言時,會少一個cmp的指令。
修改後的組合語言,會用jne來判斷,若i變成0,會將flag設為0。
小技巧的確是能將效率提升,然而卻可能讓程式變的不可讀,有利有弊。最佳的情況當然是compiler夠聰明的話,程式寫作就可以輕鬆多了。
2008年1月2日 星期三
訂閱:
張貼留言 (Atom)
0 意見:
張貼留言