什么';在java中更便宜:设置还是比较?

什么';在java中更便宜:设置还是比较?,java,performance,comparison,cpu-registers,alu,Java,Performance,Comparison,Cpu Registers,Alu,我多次遇到这样一个问题:如何实现此条件设置?。我知道这听起来很混乱,所以让我解释一下我使用代码的意思 从本质上讲,我想知道以下哪项允许最快的执行时间和最少的内存消耗,以及为什么会出现这种情况(希望使用对堆栈和/或寄存器的引用-以及计算机组件的引用,例如ALU每次处理比较所需的时间,而不是CU每次存储变量所需的时间) 关于这种情况的一些背景知识:我正在设计如何在游戏中实现组合键,但我想让组合类尽可能通用,而不是像CombinationToggle和CombinationAlwaysOff这样两个单

我多次遇到这样一个问题:如何实现此条件设置?。我知道这听起来很混乱,所以让我解释一下我使用代码的意思

从本质上讲,我想知道以下哪项允许最快的执行时间和最少的内存消耗,以及为什么会出现这种情况(希望使用对堆栈和/或寄存器的引用-以及计算机组件的引用,例如ALU每次处理比较所需的时间,而不是CU每次存储变量所需的时间)

关于这种情况的一些背景知识:我正在设计如何在游戏中实现组合键,但我想让
组合
类尽可能通用,而不是像
CombinationToggle
CombinationAlwaysOff
这样两个单独的类,然而,我-可能还有很多其他人-我遇到过这种情况


我试图确定是否切换了此特定组合,如果未切换,请关闭
按下的
布尔值。但我不确定是否应该包括一个测试来确定是否需要关闭它。

我认为案例一更快,因为分支预测为什么不
按下=切换;
?分配的速度布尔值的ent可以忽略不计。此外,设置就是设置。比较就是比较。你似乎真的在问,设置或测试尚未设置的值是否更好。这有点过早优化的味道。但添加一个简短的电路返回是一种方法。也许,这会帮助你:或者你正在谈论的差异Java是一种高级语言……你真的想谈论的是“需要时的分析和优化”,而不是“需要多少ALU指令”另请参阅:短路评估。非常同意@scottb。答案将取决于所使用的平台。事实上,JVM(当然取决于平台)已经进行了优化,使您的代码运行更快。它适当地更改指令,以充分利用系统的体系结构。我认为案例一更快,因为分支预测为什么不
pressed=toggles;
?分配给
布尔值的速度可以忽略不计。此外,设置是设置。比较就是比较。你似乎真的在问,设置或测试尚未设置的内容是否更好。这有点过早优化的味道。但添加一个简短的电路返回是实现这一点的一种方法。也许,这会对你有所帮助:或者,你所谈论的差异非常微小,不太可能有可察觉的差异实际应用程序中的性能差异。Java是一种高级语言……您真的想谈论的是“需要时的分析和优化”,而不是“需要多少ALU指令”。另请参阅:短路评估。非常同意@scottb。答案将取决于所使用的平台。事实上,JVM(这当然取决于平台)已经在幕后进行了优化,以提高代码的运行速度。它会适当地更改指令,以充分利用系统的体系结构。
// Variables won't be like this all the time...
boolean toggles = false;
boolean pressed = true;

void isPressed() {
    boolean ret = pressed;

    // Case one - test for toggling
    if(!toggles) pressed = false;

    // Case two - test for toggling and if it's true
    if(!toggles && pressed) pressed = false;

    return ret;
}