Ricerca…


Funzioni memorizzate

Memoizing è fondamentalmente un modo per memorizzare i risultati del metodo. Questo può essere utile quando un metodo viene spesso chiamato con gli stessi argomenti e il calcolo del risultato richiede tempo, quindi aumenta le prestazioni.

A partire da Groovy 2.2, i metodi possono essere annotati con l'annotazione @Memoized .

Immagina la seguente classe:

class MemoDemo {
  def timesCalculated = 0

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

Ora alla prima chiamata di questo metodo con un numero che non è stato chiamato con prima, il metodo verrà eseguito:

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

Tuttavia, se lo chiamiamo di nuovo con lo stesso argomento:

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

timesCalculated è rimasto invariato, tuttavia il metodo ha restituito lo stesso risultato. Tuttavia, chiamandolo con un argomento diverso:

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

provoca il richiamo del corpo del metodo.



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