c++ - 基于 bool toggle 的高效对称比较

标签 c++ c

我的代码有很多模式,比如

int a, b.....
bool c = x ? a >= b : a <= b;

其他不等式比较运算符也类似。有没有一种方法可以编写此代码以实现更好的 x86 性能/无分支。

请饶了我你有没有对你的代码进行基准测试?这真的是您的瓶颈吗? 输入评论。我正在寻求其他方式来编写此代码,以便我可以进行基准测试和测试。

编辑:

bool x

最佳答案

原文表达:

x ? a >= b : a <= b

没有短路评估的无分支等效表达式:

!!x & a >= b | !x & a <= b

这是一个不借助算术技巧的通用模式示例。注意运算符优先级;对于更复杂的示例,您可能需要括号。

关于c++ - 基于 bool toggle 的高效对称比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56905366/

相关文章:

c++ - C/C++ 中的变量如何工作?

c - 如何分配一个变量指针来访问msp430上的硬件寄存器?

c++ - 使用重载运算符 () C++ 时出错

编译器认为 struct 是指向 struct 的指针

c++ - Windows Search C++(MFC) CFindFiles 路径分隔符

c++ - 字符串反转,std::string 不允许字符赋值?

c - limits.h 中的数据类型大小限制是如何确定的?

c - 使用 OpenMP 优化循环后没有性能提升

c++ - c++ 11线程的段错误(核心转储)

c++ - 继承构造函数(使用)和移动