如果我們在一個內部循環有一個師又一個,就是它的智能添加特殊情況處理,以消除師:是否應該劃一個特例?
BEFORE:
int collapseFactorDepth...
for (int i = 0; i < numPixels; i++)
{
pDataTarget[i] += pPixelData[i]/collapseFactorDepth;
}
AFTER:
if (collapseFactorDepth != 1)
{
for (int i = 0; i < numPixels; i++)
{
pDataTarget[i] += pPixelData[i]/collapseFactorDepth;
}
}
else
{
for (int i = 0; i < numPixels; i++)
{
pDataTarget[i] += pPixelData[i];
}
}
燦編譯原因本身?現代CPUs是否包含任何方法來優化?
我,如果你在考慮對比的性能增益額外的代碼有益特別感興趣(有沒有?)。
背景:
- Numpixels大
- collapseFactorDepth是90%的時間1
- 現代的CPU:英特爾的x86/AMD64架構
- 請不要考慮更廣泛的東西。加載的內存開銷被優化。
- 我們不出汗,我們也許應該這樣做,因爲雙倍增反正。
只是我的想法,如果主叫方希望由一個劃分,就去做。 (我可能不會檢查'0') –
這將是一個不成熟的優化。當你爲一件事情進行優化時,你會對其他事情感到悲觀。更重要的是代碼清晰。 –
只是供參考,如果您要問這樣的表現問題,並且您知道自己在做什麼,那麼爲性能問題本身提供一些背景通常是個好主意。否則,你只會得到一堆(可能無用的)評論和答案,告訴你不要優化。 – Mysticial