我的老师说我们可以使用final
来提高效率。我尝试进行测试,但我发现添加最终方法修饰符实际上会降低效率。
我的测试是这样的:
ClassTest1:
public class ClassTest1 {
public final String getName() {
return name;
}
public final void setName(String name) {
this.name = name;
}
private String name;
}
ClassTest2:
public class ClassTest2 {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private String name;
}
主要测试方法:
public static void main(String[] args) {
ClassTest1 ct1=new ClassTest1();
ClassTest2 ct2=new ClassTest2();
Long t1=System.currentTimeMillis();
for (int i = 0; i <1000000 ; i++) {
ct1.getName();
}
Long t2=System.currentTimeMillis();
for (int i = 0; i <1000000 ; i++) {
ct2.getName();
}
Long t3=System.currentTimeMillis();
System.out.println("add final decorate cost time:"+(t2-t1));
System.out.println("not add final decorate cost time:"+(t3-t2));
}
为什么添加final
比不添加最终方法花费更多时间?
答案 0 :(得分:2)
这里有两个方面:
归结为:如果有的话,使用该关键字有助于避免在调用该方法时在运行时进行单个检查。从这个意义上讲,我们可能说的是纳秒。
所以,是的,运行时性能有一个理论方面,但是final的 real 用法是向人类读者传达意图 。