《高阶Perl》——3.4 记忆术

    xiaoxiao2021-04-18  173

    3.4 记忆术

    给函数添加缓存技术代码不是非常困难的。且已经看到,需要的改变对任何函数几乎一样。那么,为什么不让计算机做这些呢?若告诉Perl想要使一个函数具有缓存行为。Perl应该能自动地执行所需的转换。这样的给函数添加缓存行为的自动的转换就称为记忆术(memoization),函数则称为带记忆的(memoized)。

    标准的Memoize模块就是做这个的。如果Memoize模块可用,就完全不必重写fib代码。可以简单地在程序的顶部添加两行:

    ### Code Library: fib-automemo use Memoize; memoize 'fib'; # Compute the number of pairs of rabbits alive in month n sub fib { my ($month) = @_; if ($month < 2) { return $month } fib($month-2) + fib($month-1); }

    fib现在展现了缓存行为。代码和原先的慢版完全一样,但是函数不再慢了。

    相关资源:高阶PERL应用技术

    最新回复(0)