groovy
Fonctions mémo
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.