Нет разницы в производительности.Байт-код содержит те же инструкции в том же порядке, действующие на те же данные.
L0
LINENUMBER 11 L0
ICONST_1
ISTORE 0
L1
LINENUMBER 12 L1
ILOAD 0
IFEQ L2
L3
LINENUMBER 13 L3
GETSTATIC p/A.something : Ljava/lang/Object;
ARETURN
L2
LINENUMBER 15 L2
FRAME APPEND [I]
INVOKESTATIC p/A.dosomething()V
L4
LINENUMBER 17 L4
ACONST_NULL
ARETURN
L5
LOCALVARIABLE condition Z L1 L5 0
MAXSTACK = 1
MAXLOCALS = 1
против
L0
LINENUMBER 7 L0
ICONST_1
ISTORE 0
L1
LINENUMBER 8 L1
ILOAD 0
IFEQ L2
L3
LINENUMBER 9 L3
GETSTATIC p/B.something : Ljava/lang/Object;
ARETURN
L2
LINENUMBER 11 L2
FRAME APPEND [I]
INVOKESTATIC p/B.dosomething()V
L4
LINENUMBER 12 L4
ACONST_NULL
ARETURN
L5
LOCALVARIABLE condition Z L1 L5 0
MAXSTACK = 1
MAXLOCALS = 1
public class A {
static Object something = new Object();
public static void main(String[] args) {
test();
}
private static Object test() {
boolean condition = true;
if (condition) {
return something;
} else {
dosomething();
}
return null;
}
private static void dosomething() {}
}
против
public class B {
static Object something = new Object();
public static void main(String[] args) {
test();
}
private static Object test() {
boolean condition = true;
if (condition) {
return something;
}
dosomething();
return null;
}
private static void dosomething() {}
}