2
美好的一天。處理展開的循環餘數
我想問的貢獻上做手腳來處理展開的循環剩菜,有告誡說,循環是相當小的,1-3倍的展開因素,如:
EG。 B的給定的展開因素
int i = 0;
for (; i < N-N%B; i += B) {
...
}
// remainder
for (; i < N; ++i) {
...
}
如果B 2,我可以做到以下幾點:
// remainder
if (N%2) {
....
}
但是,什麼是處理B>2
很難看到爲什麼需要一個技巧,你循環N/B次,其餘部分是N%B。你通常會把它留給代碼生成器,它已經知道如何展開循環。 – 2012-03-15 20:11:32
那麼總是有* [Duff's device](http://en.wikipedia.org/wiki/Duff's_device)*,但是你的代碼沒有問題。 – 2012-03-15 20:57:30
在C或任何語言?在某些彙編語言中,預測的指令對此很有幫助。 – harold 2012-03-15 22:40:18