groovy
Memoized-Funktionen
Suche…
Protokollierte Funktionen
Durch das Merken können Methodenergebnisse zwischenspeichert werden. Dies kann nützlich sein, wenn eine Methode häufig mit denselben Argumenten aufgerufen wird und die Berechnung des Ergebnisses Zeit benötigt, wodurch die Leistung erhöht wird.
Ab Groovy 2.2 können Methoden mit der Annotation @Memoized
annotiert werden.
Stellen Sie sich folgende Klasse vor:
class MemoDemo {
def timesCalculated = 0
@Memoized
def power2(a) {
timesCalculated++
a * a
}
}
Beim ersten Aufruf dieser Methode mit einer Nummer, mit der sie zuvor nicht aufgerufen wurde, wird die Methode ausgeführt:
assert power2(2) == 4
assert timesCalculated == 1
Wenn wir es jedoch erneut mit demselben Argument aufrufen:
assert power2(2) == 4
assert timesCalculated == 1
timesCalculated
ist unverändert geblieben, die Methode timesCalculated
jedoch das gleiche Ergebnis. Allerdings mit einem anderen Argument aufrufen:
assert power2(3) == 9
assert timesCalculated == 2
führt dazu, dass der Rumpf der Methode erneut aufgerufen wird.