找到两个浮点数最大值的最快方法是什么:

一种)

y = std::max(x1, x2);

b)
if (x1 > x2)
    y = x1;
else
    y = x2;

C)
y = x1 > x2 ? x1 : x2;

谢谢

最佳答案

这是一个不同的问题



我发现 非常 不太可能像这样的微优化会对您的程序产生明显的影响。除非分析器明确表明这是一个问题,否则您永远不应该像这样进行微优化。

编辑 在评论中添加一些澄清

这个问题没有很好的答案的原因是该代码的性能高度依赖于......

  • 在你的程序中使用它的方式
  • 您正在使用的特定编译器
  • 传递给编译器的优化标志
  • 您在
  • 上运行代码的特定架构
  • 问题中未包含的许多其他非常小的东西

  • 即使包含所有这些信息,我们的答案也充其量只是猜测。回答这个问题的唯一方法是拿出一个分析器,找出哪个更快。

    然而,这几乎肯定是不值得的。微优化这样一小部分程序几乎肯定不会为您的代码增加任何显着的性能优势。一般来说,优化这样的代码是一个非常糟糕的主意,除非分析器明确告诉你这是一个问题。否则,您将花费大量时间优化某些东西,却没有明显的好处。

    是的,在某些情况下,这种优化可能很重要。但这只会在 非常特殊的 情况下,其中代码是非常紧密的高度调用循环的一部分。然而,识别此类代码的唯一方法是使用分析器。

    关于c++ - 在 C++ 中找到最大两个浮点数的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/882834/

    10-10 14:19