Java JIT 何时内联方法调用?它是基于#times调用调用方法(如果是,该数字是什么?),或者其他一些标准(那将是什么?)
我已经读过JIT可以内联'final'方法,但它也会根据运行时统计信息内联非最终方法,所以想知道什么是触发条件.
我想答案会因JVM的实现而有所不同,但也许所有这些都有共同之处?
我还是坚持这个:
19.不要过度使用实例变量
使用局部变量可以提高性能.示例1中的代码执行速度比示例2中的代码快.
例1:
public void loop() {
int j = 0;
for ( int i = 0; i<250000;i++){
j = j + 1;
}
}
Run Code Online (Sandbox Code Playgroud)
例2:
int i;
public void loop() {
int j = 0;
for (i = 0; i<250000;i++){
j = j + 1;
}
}
Run Code Online (Sandbox Code Playgroud)
实际上,我不明白为什么loop在我可以对字段进行简单访问时,每次调用函数时实例化一些内存并释放它应该更快.
这是纯粹的好奇心,我不是试图将变量'i'放在类的范围内:p是否真的使用局部变量更快?或者只是在某些情况下?