基本介紹
- 中文名:強度折減
- 外文名:Strength reduction
簡介
- 使用循環及加法取代乘法運算
- 使用循環及乘法取代指數運算
程式碼分析
- 循環不變式(Loop invariants),循環內不會改變的數值。
- 歸納變數(Induction variables),在循環內每次運行時變數都會增加或是減少一個固定的量。
c = 8;
for (i = 0; i < N; i++)
{
y[i] = c * i;
}
最佳化
其它強度折減的運算
- 使用2進位的算數位移或是邏輯位移來取代整數的乘法及除法。
- 使用常數結合位移、增加或減少來取代整數的乘法。
- 使用常數的乘法、機器整數上有限值域的優勢來取代整數除法。
原始的運算 | 取代的運算 |
---|---|
y = x / 8 | y = x >> 3 |
y = x * 64 | y = x << 6 |
y = x * 2 | y = x << 1 |
y = x * 15 | y = (x << 4) - x |