[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