Le perl
Bonjour ! Voici un petit article sur le Perl. Oui bon de la programmation dans blog dédié à Debian... je sais, je sais. Mais mon crédo depuis plusieurs années : "si tu peux pas le faire, fait le en Perl". Et pour l'instant ça passe plutôt bien ! Bref, ce que j'aime bien avec Perl, c'est qu'il existe plein de possibilités pour parvenir à ces fins. Malheureusement, quel façon de faire et dans quel contexte ?
Prenons, un cas simple une recherche dans un tableau. En PHP, nous avons la fonction in_array... mais en Perl il existe plusieurs façons de faire. Voici un petit script "benchmark" pour tester 3 techniques :
#!/usr/bin/perl
use Benchmark;
my @list;
for (1..10_000) {
push @list, $_;
}
timethese(10000, {
'grep' => sub {
if ( grep(/^5000$/o, @list) ) {
# code
}
},
'hash' => sub {
my %params = map { $_ => 1 } @list;
if ( exists($params{5000}) ) {
# code
}
},
'~~' => sub {
if ( 5000 ~~ @list ) {
# code
}
}
});
$ perl bench.pl
Benchmark: timing 10000 iterations of grep, hash, ~~...
grep: 7 wallclock secs ( 6.17 usr + 0.00 sys = 6.17 CPU) @ 1620.75/s (n=10000)
hash: 33 wallclock secs (33.29 usr + 0.00 sys = 33.29 CPU) @ 300.39/s (n=10000)
~~: 1 wallclock secs ( 1.36 usr + 0.00 sys = 1.36 CPU) @ 7352.94/s (n=10000)
Mon interprétation :
- grep est utile pour une recherche avec regex. Perf "moyenne"
- hash... à oublier !
- très performant avec pour des recherches exactes.
J'espère que ce petit test a plu... j'en refaire plein d'autres :)

