Ich schrieb zwei Methoden gibt'...! = Null' oder 'null! = ....' beste Leistung?
public class Test1 {
private String value;
public void notNull(){
if(value != null) {
//do something
}
}
public void nullNot(){
if(null != value) {
//do something
}
}
}
Leistung zu überprüfen und überprüft es nach Bytecode ist
Kompilierenpublic void notNull();
Code:
Stack=1, Locals=1, Args_size=1
0: aload_0
1: getfield #2; //Field value:Ljava/lang/String;
4: ifnull 7
7: return
LineNumberTable:
line 6: 0
line 9: 7
StackMapTable: number_of_entries = 1
frame_type = 7 /* same */
public void nullNot();
Code:
Stack=2, Locals=1, Args_size=1
0: aconst_null
1: aload_0
2: getfield #2; //Field value:Ljava/lang/String;
5: if_acmpeq 8
8: return
LineNumberTable:
line 12: 0
line 15: 8
StackMapTable: number_of_entries = 1
frame_type = 8 /* same */
}
hier zwei OP-Codes, die, wenn die Bedingung zu implementieren verwendet: es in ersten Fall verwenden ifnull- check top value of stack ist null-, und im zweiten Fall if_acmpeq- check top zwei Werte sind gleich im Stack-
also, wird dies einen Effekt auf die Leistung machen? (dieser Wille hilft mir erste Implementierung von null zu beweisen, ist klug, sowie unter dem Aspekt der Lesbarkeit in Leistung gut :))
Die Antwort von polygene ist diejenige, auf die Sie hören sollten. Aber wenn Sie wirklich denken, dass der Unterschied von Bedeutung ist, führen Sie jede Version eine Milliarde Mal oder so, und sehen Sie, ob es einen messbaren Unterschied gibt. dann komm zurück und erzähl uns davon. –
Warum ist es wichtig, ist Ihr Programm nur 3 Zeilen lang, dass es so wichtig ist, wie schnell oder langsam diese eine einsame if-Anweisung abläuft? –
Während wir zu diesem Thema sind, möchte ich beweisen, dass das Öffnen der geschweiften Klammer in derselben Zeile wie die Bedingung leistungsfähiger ist als andere geschweifte Klammern. –