"Was ist schneller?" ist die falsche Frage. "Was ist richtig für den Algorithmus?" ist die richtige Frage.
In der Regel können Sie eine Variable nur dann wiederverwenden, wenn sie einen neuen Grundwert enthalten oder auf ein anderes Objekt zeigen muss, da dies die Variable ist, die den aktuellen Zustand darstellt. Wenn die Variable neu zugewiesen wird, um etwas zu halten, das bedeutet, dass Sie etwas anderes als sind, sollten Sie das nicht tun, aber eine neue Variable verwenden.
Also sum += item;
ist eine gültige Wiederverwendung der Variablen sum
. Aber
foo = 42;
buyQuantity(foo);
...
foo = 23;
sendMessages(foo);
ist keine gültige Wiederverwendung von foo
.
Eine verwandte, aber andere Frage ist, ob Sie ein Objekt erneut verwenden sollten, um neue Werte zu speichern. Nicht gewöhnlich. Zum Beispiel:
Foo foo = new Foo();
for (int ix = 0; ix < MAX_ITERS; ++ix)
{
foo.clear();
foo.fill();
process(foo);
}
ist schlimmer als:
for (int ix = 0; ix < MAX_ITERS; ++ix)
{
Foo foo = new Foo();
foo.fill();
process(foo);
}
Ich bin nicht sicher, ob man schneller als die andere ist, wenn der Boden auf dem Stack etwas weniger Raum verwenden kann. Im Allgemeinen sollten Sie es vermeiden, neue Variablen unnötig zu deklarieren, und dies ist im Allgemeinen eine gute Vorgehensweise. –
Ich würde definitiv eine neue Variable erstellen, wenn sie für etwas verwendet wird, das nichts damit zu tun hat. Geben Sie Variablen immer aussagekräftige Namen und behalten Sie diese Bedeutung in Ihrer gesamten Anwendung bei. In Bezug auf die Leistung werden sie identisch sein, da sie beide eine Zuweisung machen. (Und wenn sie Objekte wären, würden sie beide für die Garbage Collection zur Verfügung stehen) – 4castle
Strike, dass sie nicht ganz identisch wären, weil die erste neuen Speicher für den Zeiger/Primitiv im Stack zuweisen würde (was fast 0 Mal dauert, aber in der Tat) – 4castle