我在想:
假设我有一个使用静态对象进行某些计算的类:
public class test {
static String test = "Hello World";
public static void main(String[] args)
{
System.out.println(staticMethod());
}
static String staticMethod()
{
return test;
}
}
如果我要使用另一个类,那么计算时间是否会有所不同:
public class test {
static String test = "Hello World";
public static void main(String[] args)
{
System.out.println(test2.staticMethod());
}
}
import static dataConnection.test.*;
public class test2 {
static String staticMethod()
{
return test;
}
}
因此,如果我将静态方法移动到另一个类中?
我的理论是因为Java传递指针,所以应该没有区别。但编译器是否必须挖掘更多代码,因此计算时间会增加?
答案 0 :(得分:2)
但编译器是否必须挖掘更多代码,因此计算时间会增加?
你必须指编译时间。计算在运行时发生,其性能与编译计算代码所花费的时间无关。
换句话说:静态方法的位置对性能没有影响。
答案 1 :(得分:1)
编译器会有更多的工作,但在运行时它不会有任何区别。特别是,如果该(短)方法运行足够多次,它将被内联,因此其原始位置无关紧要。
答案 2 :(得分:1)
使用static
方法的开销略低,因为您已经保证编译时绑定。 Static
方法调用将创建bytecode
指令invokestatic. ]
在实践中,它不会有任何区别。 JVM可以选择以一种方式进行优化,使static
次调用对于类中的一个方法更快,static
对另一个类中的另一个方法调用更快。您遇到的性能损失的根本原因主要是由于过早优化。
另请注意,旧的JVM可能/可能没有优化功能。