Поиск…


Памятные функции

Memoizing - это в основном способ кэширования результатов метода. Это может быть полезно, когда метод часто вызывается с теми же аргументами, и вычисление результата требует времени, что увеличивает производительность.

Начиная с Groovy 2.2, методы могут быть записаны с @Memoized аннотации @Memoized .

Представьте себе следующий класс:

class MemoDemo {
  def timesCalculated = 0

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

Теперь при первом вызове этого метода с номером, с которым он не был вызван раньше, метод будет выполнен:

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

Однако, если мы снова назовем это тем же аргументом:

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

timesCalculated остался неизменным, но метод возвратил тот же результат. Однако, называя это другим аргументом:

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

приводит к тому, что тело метода снова вызвано.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow