和运算符的c++性能及实例
c++ Performance Of And Operator With Example
我想知道&;操作员在级联庄园中工作。比较以下矩形碰撞检查的实现。
inline bool RectInRect(RECT one,RECT two){
if(one.left < two.right)
if(one.right > two.left)
if(one.top < two.bottom)
if(one.bottom > two.top)
return true;
return false;
}
inline bool RectInRect(RECT one,RECT two){
return (one.left < two.right && one.right > two.left &&
one.top < two.bottom && one.bottom > two.top);
}
这两者是相同的还是最上面的一个运行得更快?
是的,第二个版本本质上可以归结为第一个版本。运算符的相关属性是短路:只有在必要时,即第一个操作数的求值结果为true
时,才会对第二个操作数求值。否则,整个表达式将始终求值为false
,因此无需查看第二个操作数。
这种行为是有保证的,并且与||
/or
类似,但情况正好相反。
上面的版本不可能比下面的版本更快。对我来说,下面的陈述更清楚,所以我的建议是——最好使用第二个版本。
相关文章:
- 从C++实例化QML
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- OpenMP阵列性能较差
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 递归列出所有目录中的C++与Python与Ruby的性能
- 如何创建一个空的全局类并在启动时实例化它
- 无法创建抽象类的实例
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 大小相等但成员数量不同的结构之间的性能差异
- 在类实例或方法的上下文中调用函数以进行性能分析
- 全局对象是否提供比多个本地实例更好的性能
- 我们是否应该将指向类实例的智能指针存储在大型 std::vector 中以获得更好的性能?
- PDH性能计数器实例名称
- 可以安全地使用静态强制转换,为每个实例使用唯一的虚拟 int type() 来提高性能
- 和运算符的c++性能及实例