当前位置: 首页 > 知识库问答 >
问题:

在哪些情况下使用无条件和(&而不是&&)更好

戚阳
2023-03-14

我想知道Java中的一些情况(或者更广泛地说:在编程中),在布尔表达式中,使用无条件的(&)而不是条件版本(&&)是可取的。

我知道它们是如何工作的,但我无法考虑使用单个&是否值得。

共有1个答案

曾云
2023-03-14

我在实际生活中发现,表达式的两边都非常便宜,所以它节省了一两纳秒来避免分支,并使用无条件的&而不是&&。(不过,这些都是非常高性能的数学实用程序;我几乎永远不会在其他代码中使用它,而且如果没有详尽的基准测试来证明它更好,我无论如何也不会这样做。)

(举个具体的例子,x>0非常便宜而且没有副作用。为什么要冒着错误预测分支的风险来避免一个无论如何都非常便宜的测试呢?当然,因为它是boolean,最终结果无论如何都要在一个分支中使用,但是如果(x>=0&&x<=10)涉及两个分支,而如果(x>=0&x<=10)只涉及一个分支。)

 类似资料:
  • 问题内容: 我想知道Java(或更普遍的是:在编程中)的一些情况,在布尔表达式中首选使用无条件()而不是有条件版本()。 我知道它们是如何工作的,但是我想不出使用单曲值得的情况。 问题答案: 我发现在现实生活中的情况下,表达的双方都真的很便宜,所以它剃掉了一两纳秒避免分支,使用无条件代替。(不过,这些都是极高性能的数学实用程序;我几乎永远不会在其他代码中使用它,并且如果没有详尽的基准测试来证明它更

  • 我遇到了一个非常奇怪的问题,java线程正忙着等待。 我有一个线程忙于等待其他线程的静态变量的状态。假设忙碌等待的线程正在等待另一个线程的静态int变量达到某个值 如果我使用上面的代码,线程将被卡在忙等待中,不会跳出while循环,即使确实达到5。 但是,如果我使用其他代码,那么线程确实会跳出忙等待循环。有时,一旦达到5,其他时候会晚一点。但它会发生。对于我的特定示例,我将其用作“无意义的工作”

  • 问题内容: 很抱歉那个愚蠢的问题。如何在javascript切换大小写语言元素中为案件使用条件?像下面的示例一样,当变量<= 5和> 0 时,大小写应该匹配;但是,我的代码不起作用: 感谢您的任何建议! 问题答案: 这有效: 此答案的先前版本认为括号是罪魁祸首。实际上,括号在这里是无关紧要的-唯一必要的是您的case表达式必须为布尔值。 之所以起作用,是因为我们将给开关的值用作比较的依据。因此,同

  • 假设您有以下pyspark数据帧: 接下来的两个代码块应该做同样的事情-即,如果列不是<code>null<code>则返回该列的大写。但是,第二种方法(使用<code>udf</code>)会产生错误。 方法1:使用< code > py spark . SQL . functions . upper() 方法 2: 在 内部使用 这给了我< code > attribute error:“No

  • 我将guava jar文件添加到类路径中,但我的IDE(eclipse)说: Nullable无法解析为类型 但如果我ctrl+单击Nullable,我会看到蓝色下划线,然后看到下划线:

  • null 有人能解释一下目标代码和机器代码这两个概念之间的区别吗?这些是在哪些情况下产生的?