Quels sont les modules Perl intéressants pour coder ? Venez débattre
Le 2015-06-30 17:52:52, par Jasmine80, Membre émérite
Bonjour à tous,
Je me demandais, les modules complémentaires que vous pourriez conseiller, qui donnent des informations sur le script et aident à l'améliorer, qui renseignent sur la synthaxes, sur les temps d'exécussion de différents blocs de code. Je n'ai aucun besoin spécifique, c'est un poste ouvert, pour discuter, voir ce qui existe, découvrir de nouvelles choses, échanger nos expériences sur ce sujet.
D'avance merci,
Jasmine.
Je me demandais, les modules complémentaires que vous pourriez conseiller, qui donnent des informations sur le script et aident à l'améliorer, qui renseignent sur la synthaxes, sur les temps d'exécussion de différents blocs de code. Je n'ai aucun besoin spécifique, c'est un poste ouvert, pour discuter, voir ce qui existe, découvrir de nouvelles choses, échanger nos expériences sur ce sujet.
D'avance merci,
Jasmine.
-
magicsharkMembre avertipersonne n'en parle car c'est le béaba mais je me dis que si un débutant traverse cette discussion ...
donc pour moi le plus utile c'est Data:umper; qui permet de rendre des donnée au format string afin de pouvoir les afficher. le 01/07/2015 à 21:36 -
Philou67430Expert confirméle 01/07/2015 à 9:04
-
Philou67430Expert confirméTant qu'à parler des évidences, n'oublions pas le debugger : ils sont tellement nombreux, ces débutants, à ignorer l'existence du debugger...
Il permet, en dehors de sa fonction première de trouver les erreurs, d'expérimenter des expressions (les unilignes également)le 02/07/2015 à 9:35 -
cmcmcMembre confirméPour ma part j'ai pratiquement abandonné l'excellent mais vénérable Data:
umper au profit de Data: ump. Il ne fait pas partie du core et il faut donc l'installer mais à mon avis les bénéfices sont patents.
En particulier dd est une fonction fournie par Data:ump qui est selon moi plus facile d'utilisation et donne des résultats plus lisibles et plus compacts que Data: umper pour des impressions de test ou de debug. Elle est par exemple capable d'aggréger 0, 1, 2, 3, 4 en un intervalle 0 .. 4:
Code : 1
2
3
4
5
6Taisha:~/perl/forum $ perl -MData::Dump -e ' my @l = (0, 1, 2, 3, 4, 11, 20 .. 24); dd @l; ' (0 .. 4, 11, 20 .. 24) Taisha:~/perl/forum $
Code : 1
2
3
4
5
6Taisha:~/perl/forum $ perl -MData::Dump -e ' my $hr = { qw(A noir E blanc I rouge U vert O bleu) }; dd $hr ' { A => "noir", E => "blanc", I => "rouge", O => "bleu", U => "vert" } Taisha:~/perl/forum $
umper mais c'est fastidieux :
Code : 1
2
3
4
5
6
7
8
9
10Taisha:~/perl/forum $ perl -MData::Dumper -e ' my $hr = { qw(A noir E blanc I rouge U vert O bleu) }; local $Data::Dumper::Sortkeys = 1; local $Data::Dumper::Terse = 1; local $Data::Dumper::Indent = 0; local $Data::Dumper::Quotekeys = 0; print Dumper($hr), "\n" ' {A => 'noir',E => 'blanc',I => 'rouge',O => 'bleu',U => 'vert'} Taisha:~/perl/forum $
umper aussi, mais ce dernier est limité dans son évolution par les exigences de compatibilité arrière (il existe depuis la version 5.005...). le 16/12/2015 à 18:08 -
hotcryxMembre extrêmement actifHello
Depuis quelques jours, je teste les modules Benchmark et Devel::Nytprof.
Ils sont incontournables et faciles à employer.
Benchmark vous permettra principalement de comparer 2 ou plusieurs routines (avec cmpthese) faisant la même chose (codés avec vos petits doigts ^^), en donnant des statistiques du code le plus rapide.
Devel::Nytprof lance le debugger Perl et calcule le temps d'exécution de chaque instruction, chaque routine, chaque module.
Les résultats sont visualisables en html avec des codes de couleurs (rouge/vert...).
Pour profiler par exemple le script foo.pl:
Code : perl -d:nytprof foo.pl
ensuite en terminal, pour générer les fichiers html à partir du fichier nytprof.out:
Code : nytprofhtml
Code : cd nytprof
Code : nytprofhtml --open
pensez à renommer le répertoire nytprof pour comparer vos changements et pensez également à profiler vos modules.
Rem: j'ai gagné 300 ms en accès sur 1.5 sec d'un CGI => 1.2 cgi
(c'est un cgi avec accès mysql (sans index), ldap, graphe mensuel, json et jquery, je peux encore gagner du temps...)
Prochaine étape possible: utiliser du caching.
Ex: Cache::FastMmap
Il y en a une floppée comme sqlite, tie, mmap, memoize, CHI... à vous de trouver votre bonheur en utilisant la mémoire, un fichier local ou une db locale...
Ou alors passer au fastcgi, psgi...
Rem: j'ai essayé CGI::Simple (moins lourd que CGI) mais l'ai trouvé plus lent sur un serveur IIS !le 23/12/2015 à 18:11 -
Lolo78Rédacteur/ModérateurCeux qui me viennent en tête là tout de suite (outre strict et warnings):
- diagnostics: warnings et messages d'erreur plus détaillés
- Perl::Critic:respect des Perl Best Pracices de Damian Conway
- B:: Deparse: décompile l'arbre d'opcodes et permet de comprendre comment Perl a interprété ton code (utile, par ex. pour déjouer des problèmes de précédence)
- Plus généralement les modules du domaine B:
- Perl::Tidy - indenter proprement du coode
le 30/06/2015 à 19:01 -
Jasmine80Membre émériteMerci pour vos réponses, je vais y regarder de plus près.
Bonne journée.le 01/07/2015 à 9:41 -
Lolo78Rédacteur/ModérateurAh oui, j'avais pensé aux modules de Bench signalés par Philou, mais j'ai ensuite oublié au moment d'écrire la réponse.
Il y a aussi les modules généralistes de profilage de code:
Code : 1
2- Devel::Profile - Devel::NYTProf
Code : 1
2- DBI::Profile - CatalystX::Profile (petit add-on utilisant Devel::NYTProf)
le 01/07/2015 à 17:45 -
djibrilResponsable Perl et OutilsPour compléter : http://www.developpez.net/forums/d34...ire-code-perl/le 01/07/2015 à 20:10
-
Lolo78Rédacteur/Modérateurtile
Ah oui, quel incroyable oubli! Oui, tu as raison, c'est bien l'un des plus utiles ou le plus utile. ++le 02/07/2015 à 8:13