Java 中 void 方法末尾的 "return;" 是否对性能有任何影响?
Does "return;" at the end of a void method in Java have ANY impact on performance?
这听起来像是一个愚蠢的问题,但我很快就会解决这个问题。无论如何,如果我将 return;
添加到 Java 中的 void 方法的末尾,是否会对性能产生任何(我的意思是任何)影响?例如:
原方法:
public void method(){
int i = 1;
}
新方法:
public void method(){
int i = 1;
return;
}
现在,显然这不会对程序的性能产生任何重大影响,但它会产生微不足道的影响吗?如果它不以任何方式改变性能,它会改变其他任何东西吗? (喜欢编译后的程序大小?)
如果你指的是运行时性能,不是;编译器发出的字节码在有和没有它的情况下是相同的。这很容易检查:编译它,使用javac -p ClassName
查看反编译版本,然后编译它,并执行相同的操作。您会发现它们是相同的(都包含 return
字节码)。
And if it doesn't change performance in any way, does it change anything else? (Like the size of the compiled program?)
没有。字节码相同,大小也相同。
实际上,如果您有一个没有任何 return 语句的 void 方法,编译器将始终在它的末尾生成一条 return 指令。所以我认为它根本没有改变。
这听起来像是一个愚蠢的问题,但我很快就会解决这个问题。无论如何,如果我将 return;
添加到 Java 中的 void 方法的末尾,是否会对性能产生任何(我的意思是任何)影响?例如:
原方法:
public void method(){
int i = 1;
}
新方法:
public void method(){
int i = 1;
return;
}
现在,显然这不会对程序的性能产生任何重大影响,但它会产生微不足道的影响吗?如果它不以任何方式改变性能,它会改变其他任何东西吗? (喜欢编译后的程序大小?)
如果你指的是运行时性能,不是;编译器发出的字节码在有和没有它的情况下是相同的。这很容易检查:编译它,使用javac -p ClassName
查看反编译版本,然后编译它,并执行相同的操作。您会发现它们是相同的(都包含 return
字节码)。
And if it doesn't change performance in any way, does it change anything else? (Like the size of the compiled program?)
没有。字节码相同,大小也相同。
实际上,如果您有一个没有任何 return 语句的 void 方法,编译器将始终在它的末尾生成一条 return 指令。所以我认为它根本没有改变。