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.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow