Je propose la fonction UniqueElems5 suivante qui semble juste un chouia plus rapide que UniqueElems3 (en utilisant l'implémentation xs du module ce qui est normalement fait par défaut).
#!/usr/bin/perl use strict; use warnings; use List::MoreUtils 'uniq';
sub UniqueElems5 { @{$_[0]} = uniq @{$_[0]}; }
-- JL http://www.bribes.org/perl
Le 17/05/2015 15:02, Paul Gaborit a écrit :
Voici quatre possibilités. La 3e semble la plus rapide d'après les
résultats du benchmark.
[...couic]
Le module List::MoreUtils a une fonction 'uniq' qui fait tout le
boulot :
Je propose la fonction UniqueElems5 suivante qui semble juste un
chouia plus rapide que UniqueElems3 (en utilisant l'implémentation
xs du module ce qui est normalement fait par défaut).
#!/usr/bin/perl
use strict;
use warnings;
use List::MoreUtils 'uniq';
Je propose la fonction UniqueElems5 suivante qui semble juste un chouia plus rapide que UniqueElems3 (en utilisant l'implémentation xs du module ce qui est normalement fait par défaut).
#!/usr/bin/perl use strict; use warnings; use List::MoreUtils 'uniq';
sub UniqueElems5 { @{$_[0]} = uniq @{$_[0]}; }
-- JL http://www.bribes.org/perl
kurtz le pirate
Le 17/05/2015 15:02, Paul Gaborit a écrit :
Voici quatre possibilités. La 3e semble la plus rapide d'après les résultats du benchmark.
... la différence n'est pas flagrante entre 1 et 3
Je propose la fonction UniqueElems5 suivante qui semble juste un chouia plus rapide que UniqueElems3 (en utilisant l'implémentation xs du module ce qui est normalement fait par défaut).
Bien vu. J'avais jeté un œil à List::Util (qui ne propose pas de fonction 'uniq') mais j'avais oublié List::Module.
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
À (at) Sun, 17 May 2015 21:17:23 +0200,
Jean-Louis Morel <jl_morel@bribes.org> écrivait (wrote):
Le 17/05/2015 15:02, Paul Gaborit a écrit :
Voici quatre possibilités. La 3e semble la plus rapide d'après les
résultats du benchmark.
[...couic]
Le module List::MoreUtils a une fonction 'uniq' qui fait tout le
boulot :
Je propose la fonction UniqueElems5 suivante qui semble juste un
chouia plus rapide que UniqueElems3 (en utilisant l'implémentation
xs du module ce qui est normalement fait par défaut).
Bien vu. J'avais jeté un œil à List::Util (qui ne propose pas de
fonction 'uniq') mais j'avais oublié List::Module.
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Je propose la fonction UniqueElems5 suivante qui semble juste un chouia plus rapide que UniqueElems3 (en utilisant l'implémentation xs du module ce qui est normalement fait par défaut).
Bien vu. J'avais jeté un œil à List::Util (qui ne propose pas de fonction 'uniq') mais j'avais oublié List::Module.
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
Paul Gaborit
À (at) Sun, 17 May 2015 22:10:44 +0200, kurtz le pirate écrivait (wrote):
Le 17/05/2015 15:02, Paul Gaborit a écrit :
Voici quatre possibilités. La 3e semble la plus rapide d'après les résultats du benchmark.
... la différence n'est pas flagrante entre 1 et 3
Sur une liste de 10000 éléments, c'est moins visible. Mais dès qu'on travaille sur de petites listes, la différence est plus importante. Et la fonction 'uniq' de List::MoreUtils reste toujours la plus rapide (sans compter qu'il n'y a pas à la maintenir).
le truc est de passer la référence par $a = shift; et de modifier le tableau in situ avec le @$a.
Ça, c'est expliqué en détail dans 'perlref'...
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
À (at) Sun, 17 May 2015 22:10:44 +0200,
kurtz le pirate <kurtzlepirate@free.fr> écrivait (wrote):
Le 17/05/2015 15:02, Paul Gaborit a écrit :
Voici quatre possibilités. La 3e semble la plus rapide d'après les
résultats du benchmark.
... la différence n'est pas flagrante entre 1 et 3
Sur une liste de 10000 éléments, c'est moins visible. Mais dès qu'on
travaille sur de petites listes, la différence est plus importante. Et
la fonction 'uniq' de List::MoreUtils reste toujours la plus rapide
(sans compter qu'il n'y a pas à la maintenir).
le truc est de passer la référence par $a = shift;
et de modifier le tableau in situ avec le @$a.
Ça, c'est expliqué en détail dans 'perlref'...
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Sur une liste de 10000 éléments, c'est moins visible. Mais dès qu'on travaille sur de petites listes, la différence est plus importante. Et la fonction 'uniq' de List::MoreUtils reste toujours la plus rapide (sans compter qu'il n'y a pas à la maintenir).
le truc est de passer la référence par $a = shift; et de modifier le tableau in situ avec le @$a.
Ça, c'est expliqué en détail dans 'perlref'...
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
Paul Gaborit
À (at) Sun, 17 May 2015 23:49:04 +0200, Paul Gaborit écrivait (wrote):
Bien vu. J'avais jeté un œil à List::Util (qui ne propose pas de fonction 'uniq') mais j'avais oublié List::Module.
^^^^^^^^^^^^^ List::MoreUtils
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
À (at) Sun, 17 May 2015 23:49:04 +0200,
Paul Gaborit <Paul.Gaborit@invalid.invalid> écrivait (wrote):
Bien vu. J'avais jeté un œil à List::Util (qui ne propose pas de
fonction 'uniq') mais j'avais oublié List::Module.
^^^^^^^^^^^^^
List::MoreUtils
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>