如果条件x> 1,则缩短3 || y> 3 || z> 3

时间:2015-12-01 03:54:01

标签: optimization

是否有其他方法可以做到这一点:

{{1}}

我在想一些按位操作,但却找不到任何东西。

我搜索了谷歌,但很难找到与此类基本问题相关的内容。 谢谢!

修改 我是一般编程的想法。根据特定的语言会有所不同吗?比如C / C ++,Java ......

1 个答案:

答案 0 :(得分:6)

你拥有的是好的。假设C / C ++或Java:

  • 意图很明白
  • 短路优化意味着只要任何一个部分成立,表达式就会成立。

观察第二点 - 如果xyz中的任何一个更可能是>3,那么将它们放在表达式的左侧它们首先被评估,这意味着其他可能根本不需要进行评估。

为了论证,如果你必须按位检查x|y|z > 3有效,但它通常不会减少,所以它(可能是*)总是2位运算和比较,其他方式可能是和1比较快。

(*这是语言律师到达的地方添加评论为什么这个编辑错误并且可以优化按位版本; - )

这里有一条评论(现已删除),“新程序员不应该担心这种优化水平” - 这是100%正确的。写下易于理解,工作代码,然后在你知道它“太慢”之后尝试从中挤出性能。