我有一位同事正在与我争辩说,在if语句中使用时,否定条件会更快。我已经争辩说编译器正在优化代码,我们真的不知道这个条件将如何实际结束。
例如,她声称
if(!MyCondition)
比
快if(MyCondition)
我搜索过,无法在任何地方找到参考资料。所以,我的问题是:
在if语句中使用条件时,是否真的有提高性能的偏好?或者只是提高可读性?
答案 0 :(得分:9)
过早优化是所有邪恶的根源
始终追求可读性。
if ( hasRightXYZ )
VS
if ( ! hasRightXYZ )
在可读性方面没有那么重要。 但如果情况变得复杂,总是寻求更高的可读性。
if ( hasRightXYZ || hasRightYZX || hasRightZYX )
VS
if ( ! hasRightXYZ && ! hasRightYZX && ! hasRightZYX )
如果您正在寻找性能改进,那么简单的否定就不是您想要追捕的事情。相当典型的N + 1选择场景或其他一些东西。