gpt4 book ai didi

c++ - 查看数字是否包含在未排序的双数区间内的最有效方法?

转载 作者:搜寻专家 更新时间:2023-10-31 02:10:33 28 4
gpt4 key购买 nike

所以我知道这个问题可能非常微不足道,不值得问,因为差异很小,但我还是想知道。

让我们考虑三个 float ,'a'、'b' 和 'number'。我们想知道 'number' 是否包含在边界 'a' 和 'b' 的区间内;

'a' 和 'b' 是区间的限制,但它们是未排序的:'a' 可能小于 'b',反之亦然。

哪个函数会给出最快的结果?

1)

bool isNumberInInterval(float a, float b, float number)
{
if (a < b)
{
return ( (a <= number) && (number <= b) );
}
else
{
return ( (b <= number) && (number <= a) );
}
}

2)

bool isNumberInInterval(float a, float b, float number)
{
return ( ( (b <= number) && (number <= a) ) || ( (a <= number) && (number <= b) ) );
}

最佳答案

很难说哪个更快。这取决于很多事情(数字分布、分支预测、编译器)。你应该对它进行基准测试。在我的 PC 上,使用 GCC 6.3,具有均匀分布的 [0;1] 数字,它们的速度是相同的。

此变体在当前 PC 上应该更快(比我的 PC 上的变体快 25%):

bool isNumberInInterval(float a, float b, float number)
{
return (a-number)*(b-number)<=0;
}

关于c++ - 查看数字是否包含在未排序的双数区间内的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45046098/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com