Java 效率问题
class A{
public String a;
}
class B{
public A objA;
}
class demo{
public void test(){
B b= new B();
//1:
String temp = b.objA.a;
for(int i = 0 ; i < 99999999; i++)
System.out.print(temp);
//2:
for(int i = 0 ; i < 99999999; i++)
System.out.print(b.objA.a);
}
}
首先第一个例子。场景是假定在会有N次调用A中的一个字段。
第二个例子 。场景假定为调用N次test()方法.(将循环去掉,只是单独的使用)
想了解深入点 求分析~
------解决方案--------------------
不考虑编译器优化的话,那肯定是第一个快了。
这种问题,你应该学习C/C++和汇编,你就知道1是什么样子的汇编了。
而2,不优化的时候,编译出来的汇编会多一些寻址的过程。。。
好的编译器,可能把2个,编译成(接近)第一种。但是这取决于很多条件,线程,上下文等等。
------解决方案--------------------应该第一个快吧,
第二个好比把String temp = b.objA.a;放在循环体内。。。
------解决方案--------------------