[Bielefeld-pm] Nachtrag zum Treffen

Jürgen Peters taulmarill at xgn.de
Mi Apr 27 04:48:08 PDT 2011


Hallo,

einige Sachen die ich zu dem gestrigen Treffen noch nachreichen wollte:

Ich hab mal ein paar Benchmarks gefahren um das orcish maneuver mit der Schwatzian transformation zu vergleichen. Hier das Script:

----<start>----
use strict;
use warnings;

use Benchmark qw(:all);
use Digest::SHA qw(sha512_hex);

my @list = "a" .. "z";

### einmal beide subs ausgeben um die Ausgabe zu vergleichen
print join( ", ", schwartz( @list ) ) ."\n";
print join( ", ", orc( @list ) ) ."\n";
print join( ", ", plain( @list ) ) ."\n";

### Benchmark
cmpthese( 0, {
    schwartz => sub { my @foo = schwartz( @list ) },
    orc      => sub { my @foo = orc( @list )      },
    plain    => sub { my @foo = plain( @list)     },
});

### Subroutinen, die die eigentliche Arbeit machen
sub schwartz {
    map { $_->[1] } sort { $a->[0] cmp $b->[0] } map { [ sha($_), $_ ] } @_;
}

sub orc {
    my %cache;
    sort { ( $cache{$a} //= sha($a) ) cmp ( $cache{$b} //= sha($b) ) } @_;
}

sub plain {
    sort { sha($a) cmp sha($b) } @_;
}

sub sha {
    my $val = shift;
    $val = sha512_hex( $val ) for 1 .. 100;
    return $val;
}
----<end>----


Weitere Informationen über das c't Spezial von dem ich gestern gesprochen habe gibt es unter http://www.heise-shop.de/heise-zeitschriften-verlag/ct-kompakt-02-2011-programmieren_pid_14814391.html


Um sich anzeigen zu lassen, was der perl Parser aus dem Quellcode macht, kann man auf der Kommandozeile perl mit dem Parameter -MO=Deparse starten. Weitere Details unter http://perldoc.perl.org/B/Deparse.html


Außerdem hatte ich gestern noch vergessen zu erwähnen, dass ich zwei 60 Tage Gutscheine für http://www.lovefilm.de/ habe. Falls jemand von euch Interesse hat soll er sich bei mir melden.


Gruß,
Jürgen


Mehr Informationen über die Mailingliste Bielefeld-pm