2

检查 '<=' 而不是 '>' 是否更昂贵?

第一个检查 < 和 ==,但 '>' 只检查一次。

或者也许编译器对此进行了优化?

4

5 回答 5

15

这取决于您要比较的内容,但对于内置类型,两者通常都只是一条机器指令。

于 2012-07-11T11:21:53.170 回答
4

很少有任何明显的差异。如果你正在考虑这种优化,我敢打赌,你没有优化正确的东西。

于 2012-07-11T11:22:36.043 回答
3

对于非内置类型,您可以根据需要重载两个运算符:

class Foo
{
public:    
    bool operator<=(const Foo &other) const
    {

    }

    bool operator<(const Foo &other) const
    {

    }

};

因此,如果比较运算符是您的应用程序的瓶颈,您可以优化您的运算符并且<=可以以不同的方式计算,然后调用<==

于 2012-07-11T11:22:55.360 回答
0

不,两者的成本相同。假设您使用的是已知的标准编译器而不是花哨的编译器

于 2012-07-11T11:23:50.330 回答
0

No.<=本质上>与额外的 NOT 相同,并且与 NOT>=相同<。(如果有的话,哪些有额外的 NOT 我不确定,但它们在硬件级别上基本上都是相同的。)

于 2012-07-11T11:44:13.013 回答