Betrachten Sie die Klasse Foo
.Cache-Eigenschaften in lokalen Variablen?
public class Foo {
private double size;
public double getSize() {
return this.size; // Always O(1)
}
}
Foo
hat eine Eigenschaft Größe genannt, die häufig zugegriffen wird, aber nie geändert, von einem bestimmten Verfahren. Ich habe immer eine Eigenschaft in einer Variablen zwischengespeichert, wenn sie in irgendeiner Methode mehr als einmal aufgerufen wurde, weil "jemand es mir gesagt hat", ohne viel darüber nachzudenken. d.h.
public void test(Foo foo) {
double size = foo.getSize(); // Cache it or not?
// size will be referenced in several places later on.
}
Ist es das wert, oder ein Overkill?
Wenn ich es nicht zwischenspeichern, sind moderne Compiler klug genug, um es selbst zu cachen?
Berechnung Wenn ich es tue, ich tue es für die Lesbarkeit, nicht die Leistung. – yshavit
hängt von der Komplexität Ihrer Implementierung der size() -Methode ab, zum Beispiel im Falle von ArrayList oder String ist es O (1), also lohnt es sich nicht –
zu cachen Ändern Sie einfach 'double size = foo.getSize(); 'to' double fooSize = foo.getSize(); '. –