Mar*_*ood 4 java optimization code-readability
这似乎是一个常见的问题,但我搜索了SO和谷歌,找不到我正在寻找的东西:
this在Java 中调用关键字的开销是多少?我知道在C++中由于解除引用当前对象指针而产生一些最小的开销.Java会产生同样的开销吗?进行多次调用是否不太理想this.这主要是可读性与优化的问题.
没有任何.它们都产生完全相同的字节码.例如,这个:
package test;
public class T {
int a=0;
public T() {
System.out.println(a); //this line
}
public static void main(String[] args) {
new T();
}
}
Run Code Online (Sandbox Code Playgroud)
...生产:
public class test.T {
int a;
public test.T();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: iconst_0
6: putfield #2 // Field a:I
9: getstatic #3 // Field java/lang/System.out:Ljava/io/PrintStream;
12: aload_0
13: getfield #2 // Field a:I
16: invokevirtual #4 // Method java/io/PrintStream.println:(I)V
19: return
public static void main(java.lang.String[]);
Code:
0: new #5 // class test/T
3: dup
4: invokespecial #6 // Method "<init>":()V
7: pop
8: return
}
Run Code Online (Sandbox Code Playgroud)
...无论标记此行的行是否使用a或this.a.(如果你愿意的话尝试一下 - 以两种方式编译上面的代码并比较两个类文件javap -c.)考虑到它们产生完全相同的字节码,性能上没有任何差别.