サーチ…


メモ機能

Memoizingは基本的にメソッドの結果をキャッシュする方法です。これは、メソッドが同じ引数で頻繁に呼び出され、結果の計算に時間がかかるためにパフォーマンスが向上する場合に便利です。

Groovy 2.2から、@ @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