《高阶Perl》——3.4 记忆术

简介: 本节书摘来自华章计算机《高阶Perl》一书中的第3章,第3.4节,作者(美)Mark Jason Dominus,译 滕家海,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

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现在展现了缓存行为。代码和原先的慢版完全一样,但是函数不再慢了。

相关文章
|
6天前
|
存储 索引 Perl
|
6天前
|
Perl
|
6天前
|
Perl
|
6天前
|
Perl
|
6天前
|
Perl
|
6天前
|
Perl
|
缓存 程序员 Perl
《高阶Perl》——3.6 CAVEATS
本节书摘来自华章计算机《高阶Perl》一书中的第3章,第3.6节,作者(美)Mark Jason Dominus,译 滕家海,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1394 0