if(variable==SOME_CONSTANT || variable==OTHER_CONSTANT)
在这种情况下,在一个平台上,在第二个测试上的分支将比简单地执行它需要更多的周期,优化器是否可以将其视为简单的?
是的,这是允许的,实际上C#编译器在某些情况下会在&&
和上执行这种优化,将它们简化为
&
和。正如你注意到的,评估右侧必须没有副作用。
有关何时生成优化的确切详细信息,请参阅编译器源代码。
int? z = x + y;
int? z;
int? temp1 = x;
int? temp2 = y;
z = temp1.HasValue & temp2.HasValue ?
new int?(temp1.GetValueOrDefault() + temp2.GetValueOrDefault()) :
new int?();
问题内容: 我想知道JavaScript是否具有C#中的&&运算符之类的“短路”评估。如果没有,我想知道是否有一种合理的解决方法可以采用。 问题答案: 是的,JavaScript具有“短路”评估。
问题内容: 给出以下代码: 如果返回,php解释器是否还会检查以后的条件,例如? 如果是这样,那么为什么它在不需要时会做额外的工作呢? 问题答案: 是的,PHP解释器是“惰性”的,这意味着它将尽可能少地进行比较以评估条件。 如果要验证,请尝试以下操作:
问题内容: 我希望使用Python函数来帮助我进行计算,但是如果击中a时不立即求值,则该过程可能会花费更长的时间。我认为这可能是经过短路评估的,但我只是想确定一下。另外,有没有一种方法可以在Python中说明如何评估函数? 问题答案: 是的,它会短路: 从文档: 如果iterable的所有元素都为true(或者iterable为空),则返回True。相当于: 因此,当它为False时,该函数立即中
主要内容:JIT编译器语法,JIT编译器的风险和假设JIT 编译器是用 C++ 编写的,用于将 Java 转换为字节码。现在 Java 10 可以选择启用基于 Java 的实验性 JIT 编译器 Graal 来代替标准的 JIT 编译器。Graal 正在使用 Java 9 中引入的 JVMCI,即 JVM 编译器接口。 Graal 在 Java 9 中也可用。使用 Java 10,我们可以启用 Graal 来测试和调试实验性 JVM 编译器。 JI
问题内容: 说我有这样的代码: 通常,仅当所有其他调用a()-d()返回true时,才调用e()。是否可能有一些编译器或JVM选项来禁用短路评估,所以无论其他函数的结果如何,都将始终调用e()? 基本上我正在做一个大型系统的UAT,需要测试e(),但是设置确保所有a(),b()等返回true的环境和场景都是非常痛苦的… 编辑:好的,我猜想使用位AND代替逻辑可以提供某种解决方法,但是理想情况下,我