记忆功能
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
导致该方法的主体再次被调用。