Recherche…


Fonctions mémo

La mémorisation est essentiellement un moyen de mettre en cache les résultats des méthodes. Cela peut être utile lorsqu'une méthode est souvent appelée avec les mêmes arguments et que le calcul du résultat prend du temps, ce qui augmente les performances.

À partir de Groovy 2.2, les méthodes peuvent être annotées avec l'annotation @Memoized .

Imaginez la classe suivante:

class MemoDemo {
  def timesCalculated = 0

  @Memoized
  def power2(a) {
    timesCalculated++
    a * a
  }
}

Maintenant, lors du premier appel de cette méthode avec un numéro avec lequel il n'a pas été appelé auparavant, la méthode sera exécutée:

assert power2(2) == 4
assert timesCalculated == 1

Cependant, si nous l'appelons à nouveau avec le même argument:

assert power2(2) == 4
assert timesCalculated == 1

timesCalculated est resté inchangé, mais la méthode a renvoyé le même résultat. Cependant, l'appelant avec un argument différent:

assert power2(3) == 9
assert timesCalculated == 2

entraîne le rappel du corps de la méthode.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow