检查 '<=' 而不是 '>' 是否更昂贵?
第一个检查 < 和 ==,但 '>' 只检查一次。
或者也许编译器对此进行了优化?
这取决于您要比较的内容,但对于内置类型,两者通常都只是一条机器指令。
很少有任何明显的差异。如果你正在考虑这种优化,我敢打赌,你没有优化正确的东西。
对于非内置类型,您可以根据需要重载两个运算符:
class Foo
{
public:
bool operator<=(const Foo &other) const
{
}
bool operator<(const Foo &other) const
{
}
};
因此,如果比较运算符是您的应用程序的瓶颈,您可以优化您的运算符并且<=
可以以不同的方式计算,然后调用<
和==
不,两者的成本相同。假设您使用的是已知的标准编译器而不是花哨的编译器
No.<=
本质上>
与额外的 NOT 相同,并且与 NOT>=
相同<
。(如果有的话,哪些有额外的 NOT 我不确定,但它们在硬件级别上基本上都是相同的。)