gpt4 book ai didi

java - JIT可以优化这种不必要的调用吗?

转载 作者:行者123 更新时间:2023-12-01 17:22:18 26 4
gpt4 key购买 nike

我对 JIT 优化有疑问。我编写了一段简单的代码:

class btest
{
static final boolean flag=false;

public final void foo(int x)
{
if(flag) {a=x; b=x*2; c=x*3;}
}

public void bar(int y) {foo(y);}

int a,b,c;
};

flag 设置为 false,因此 foo() 完美编译为空代码 - 只是返回。但 bar() 仍然调用它。

JIT 有可能消除这个调用吗?flag 是否属于外部类有关系吗?

问候

最佳答案

它可以消除它并将其内联到代码中。

注意:它也可以对非 volatile 非最终变量执行此操作,它认为线程不会更改值。一个常见的错误是这样的

boolean running = true;

public void run() {
while(running) {
// do something
}
}

public void stop() {
running = false;
}

一个常见的误解是线程可能会继续运行一段时间,但会在某个未知点停止,而实际上 JIT 可能会内联运行并且永远不会停止。

关于java - JIT可以优化这种不必要的调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17748950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com