在现代处理器上使用C ++剪辑变量的最佳(最快)方法是什么?例如如果它低于某个值,请将其剪切为该值。
我知道有几种方法可以做到,但是,关于速度的分支预测会浮现在脑海中。 例如:
double ClipValue(double value)
{
if (value < 0)
{
value = 0.0;
}
return value;
}
我猜想上面的部分时间必须分支。
double ClipValue(double value)
{
return value < 0.0 ? 0.0 : value;
}
这可能不会。
double ClipValue(double value)
{
return std::max(value, 0.0);
}
我不确定这会如何表现。
我想很多都归结为编译器和优化设置,但通常被认为是使变量饱和的最快方法。我在这个例子中使用了double,但我对整数同样感兴趣。