Sök…


Memorerade funktioner

Att memorera är i princip ett sätt att cachemetoderesultat. Detta kan vara användbart när en metod ofta kallas med samma argument och beräkningen av resultatet tar tid, vilket ökar prestandan.

Med början från Groovy 2.2, kan metoder markeras med @Memoized anteckningen.

Föreställ dig följande klass:

class MemoDemo {
  def timesCalculated = 0

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

Efter det första samtalet med denna metod med ett nummer som det inte har kallats för tidigare kommer metoden att köras:

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

Men om vi kallar det igen med samma argument:

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

timesCalculated har förblivit oförändrat, men metoden gav samma resultat. Men att kalla det med ett annat argument:

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

resulterar i att kroppen av metoden kallas igen.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow