Buscar..


Funciones memorizadas

La memorización es básicamente una forma de almacenar en caché los resultados del método. Esto puede ser útil cuando a menudo se llama a un método con los mismos argumentos y el cálculo del resultado lleva tiempo, por lo tanto, aumenta el rendimiento.

A partir de Groovy 2.2, los métodos se pueden anotar con la anotación @Memoized .

Imagina la siguiente clase:

class MemoDemo {
  def timesCalculated = 0

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

Ahora, en la primera llamada de este método con un número con el que no se ha llamado antes, el método se ejecutará:

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

Sin embargo, si lo llamamos de nuevo con el mismo argumento:

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

timesCalculated ha mantenido sin cambios, pero el método timesCalculated el mismo resultado. Sin embargo, llamándolo con un argumento diferente:

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

resultados en el cuerpo del método que se llama de nuevo.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow