sách gpt4 ai đã đi

Tối ưu hóa Java If

In lại 作者:搜寻专家 更新时间:2023-11-01 01:02:08 28 4
mua khóa gpt4 Nike

我确实有以下声明:

isEnabled = false;
if(foo(arg) && isEnabled) {
....
}

public boolean foo(arg) {
some really long running code
}

交换 if 中的语句是否有意义?

if(isEnabled && foo(arg)) { ... }

还是编译器为我优化?

1 Câu trả lời

请注意,如果 foo() 也有 side effects,则这两个表达式的行为不同.

如果它正在操纵程序的状态,那么如果您始终调用它,或者如果您仅将它作为 isEnabled 值的依赖项来调用它,就会产生很大的不同。

例如,考虑:

boolean foo(Object arg) { 
someLocalVariable = arg;
//do some calculation and return an answer
}

如果你总是调用foo(),或者你只在isEnabled打开的情况下调用它,这很重要,导致以下两个表达式彼此完全不同:

if (isEnabled && foo(arg)) { ...} //local variable changes only if isEnabled==true
if (foo(arg) && isEnabled) { ...} //local variable always changes

关于Java If 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30504850/

28 4 0
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com