www.farid-hajji.net banner

Farid Hajji

Perl: Einführung, Anwendungen, Referenz (2/e) [Support-Site]

Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2

Beispielprogramm

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
FreeBSD Logo