Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2
fib-memoize.pl
#!/usr/local/bin/perl -w
# fib-memoize.pl -- Memoizing zur Beschleunigung der Fibonacci-Funktion
# Diese Version von fib() benutzt Memoizing zur Beschleunigung
{
local %cache;
sub fib {
return 1 if $_[0] == 0 || $_[0] == 1;
return $cache{$_[0]} if exists $cache{$_[0]};
return $cache{$_[0]} = fib($_[0]-1) + fib($_[0]-2);
}
}
# Das ist die alte, klassische rekursive fib()-Definition
sub slowfib {
return 1 if $_[0] == 0 || $_[0] == 1;
return slowfib($_[0] - 1) + slowfib($_[0] - 2);
}
my $big = shift; # Argument von der Kommandozeile
use Time::HiRes qw( time );
$before = time(); $res = fib($big); $secs = time() - $before;
print "fib($big) = $res, ($secs seconds)\n";
$before = time(); $res = fib($big); $secs = time() - $before;
print "fib($big) = $res, ($secs seconds)\n";
$before = time(); $res = slowfib($big); $secs = time() - $before;
print "slowfib($big) = $res, ($secs seconds)\n";
[Prev] [Up] [Relevant Chapter] [Next]
[Alte Quelle]
| Last modified: $Date: 2006/05/18 12:55:56 $ FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy |
|