如果我们在一个内部循环有一个师又一个,就是它的智能添加特殊情况处理,以消除师:是否应该划一个特例?
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