3 c++
找到最多两个浮点数的最快方法是什么:
一个)
y = std::max(x1, x2);
Run Code Online (Sandbox Code Playgroud)
b)
if (x1 > x2)
y = x1;
else
y = x2;
Run Code Online (Sandbox Code Playgroud)
C)
y = x1 > x2 ? x1 : x2;
Run Code Online (Sandbox Code Playgroud)
谢谢
Jar*_*Par 25
这是一个不同的问题
为什么您认为如此小的优化在您的计划的更大范围内是重要的?
我发现这非常不可能的微型优化,如这会对你的程序的可感知的影响.除非探查器明确证明这是一个问题,否则你不应该像这样进行微优化.
编辑在评论中添加一些澄清
这个问题没有很好的答案的原因是该代码的性能高度依赖于......
即使包含了所有这些信息,我们的答案也是最好的猜测.回答这个问题的唯一方法是扯出一个分析器并找出哪个更快.
然而,这几乎肯定不值得努力.微优化您的程序中的这么小部分几乎肯定不会为您的代码添加任何显着的性能优势.一般来说,优化这样的代码是一个非常糟糕的主意,除非探查器明确告诉你这是一个问题.否则你会花很多时间来优化一些东西而不会产生任何好处.
是的,有些情况下这种优化可能很重要.但这只是在一个非常特殊的情况下,代码是一个非常严格的高度调用循环的一部分.但是,识别此类代码的唯一方法是使用分析器.
您可以在系统上自行查看.
我在gcc上为你做了 - redhat.在我的系统上的结果,对于100,000次执行,x1 = 432943.5,x2 = 434232.9
a)~1200 uSec b)~600 uSec c)~600 uSec
编辑:使用-O2优化我在所有3种情况下得到了相同的结果:~110 uSec.
当然,实际结果取决于您特定问题和系统中的许多因素.