Ricerca…


Sintassi

  • closure.memoize ()
  • closure.memoizeAtMost (n)
  • closure.memoizeAtLeast (n)
  • closure.memoizeBetween (n, m)

Osservazioni

La Memoizzazione è un metodo per memorizzare nella cache il risultato di un'invocazione di chiusura. La funzione memoize applicata a una chiusura restituisce una nuova chiusura il cui valore di ritorno viene memorizzato nella cache in base ai parametri di input. Le cache utilizzate per le tre varianti di metodi di memoizzazione sono le cache LRU, ovvero l'elemento utilizzato meno di recente viene rimosso per primo dalla cache.

Memoizzazione semplice

def count = 0

nonmemoized = { long n -> println "nonmemoized: $n"; count++ }

nonmemoized(1)
nonmemoized(2)
nonmemoized(2)
nonmemoized(1)
assert count == 4


def mcount = 0

memoized = { long n -> println "memoized: $n"; mcount++ }.memoize()

memoized(1)
memoized(2)
memoized(2)
memoized(1)
assert mcount == 2


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow