[Tokyo.pm] Re: [Tokyo.pm] 例会システム
scozens @ pwj.co.jp
scozens @ pwj.co.jp
2000年 1月 11日 (火) 22:35:15 CST
ハズンズです。
> <ryuchi @ hoge.org>
ちょっとO-Tだけど、いつもコンピュータ雑誌などでこの「hoge」を読んでいるんだ
が、
辞書で見つけない。foo と同じですか?
ObPerl: オライリーのMastering Algorithms in Perlに、メモイズと言う技術があ
る。
これが一番簡単な例だ:
{ my %cache;
sub dnslookup {
my $host = shift;
return $cache{$host} if exists $cache{$host}; # Memoize
return $cache{$host}=(gethostbyname($host))[4];
}
}
書いたばっかりプログラムがもうちょっと複雑な演算手順を使っている:
my %config = (
uname => &find_uname(),
lib_dir => &find_libdir(),
...
);
sub discover {
my $what=shift;
return $config{$what} = &$config{$what} if ref $config{$what} eq
"CODE";
return $config{$what};
}
...
$uname=discover("uname");
(実と言えば、discoverより、タイしたクラスのFETCHだ。)
自分でこういう作成技術を書かなくていい。Mark-Jason Dominusが書いた
memoize.pm
(http://www.plover.com/~mjd/) を使て:
use memoize;
memoize("dnslookup");
my dnslookup { return gethostbyname($_[0])[4] }
瞬間で最適化!
--
sub japh { return $Simon::is||$Simon::is="Just another Perl Hacker" }
Tokyo-pm メーリングリストの案内