Angenommen, ich habe die folgenden Code-Schnipselgibt es eine Leistungseinbuße, um die Objektdeklaration in eine Schleife zu setzen?
for (i = 1..100000) {
String s = make_some_string(i); // this function depends on `i` only
output_this_result(s);
}
Würde, die einen Unterschied machen, wenn die Erklärung von String s
außerhalb der Schleife bewegt wird? Ich denke, der Compiler ist schlau genug, in jeder Schleife kein String-Objekt zu konstruieren und zu zerstören. Aber was wäre, wenn es eine komplizierte object
anstelle einer string
wäre?
Testen Sie es. Sehen Sie sich die generierte ASM an. –
Ich denke, Compiler ist schlau genug, aber muss getestet werden. –
Offenbar wird eine neue Zeichenkette erzeugt und von 'make_some_string()' zugewiesen und später bei jeder Iteration zerstört. Haben Sie versucht, den Unterschied beider Versuche zu messen? Was hast du beobachtet? – moooeeeep