最好的方式来" Clip" (饱和)变量

时间:2014-04-12 15:38:59

标签: c++ c optimization processor

在现代处理器上使用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,但我对整数同样感兴趣。

0 个答案:

没有答案