IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Petite optimisation de code


Sujet :

Langage Perl

  1. #1
    Membre averti
    Avatar de Konrad Florczak
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 242
    Points : 336
    Points
    336
    Par défaut Petite optimisation de code
    Bonjour j'ai pas mal de dossier à tester avant l'initatialisation du code et j'aimerais savoir si il n'y a pas moyen d'optimiser tous ces unless :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        unless (-e "$root_dir") 
    	{
    	`mkdir $root_dir`;
    	print "$root_dir folder created ";
    	}
        unless (-e "$data_dir") 
    	{
    	`mkdir $data_dir`;
    	print "$data_dir folder created ";
    	}
    	unless (-e "$processed_dir") 
    	{
    	`mkdir $processed_dir`;
    	print "$processed_dir folder created ";
    Merci
    Avant de poster consultez la recherche avancée du forum
    N'oubliez pas le bouton

    Formation LaTeX et Outils Pratiques

    C'est ce que nous pensons déjà connaître qui nous empêche souvent d'apprendre.

  2. #2
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    J'ai bien une optimisation éventuelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        @a_valider=($root_dir, $data_dir, $processed_dir) ;
     
        @a_creer=grep { not -e $_ } @a_valider;
        foreach my $dir (@a_creer)
    	{
    	    mkdir $dir;
                print "$dir folder created ";
            }
    Moi, j'aime bien les fonctions grep ou map ...

    Pour l'explication :
    • On stocke tous les répertoires à vérifier dans une liste.
    • On sélectionne dans cette liste tous les répertoires qui n'existent pas. On stocke cette sélection dans une nouvelle liste.
    • Pour tous les éléments de cette nouvelle liste, on crée le répertoire et on loggue un message de création.


    Dit comme ça, ça paraît simple, non ?
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Je suis étonné que tu n'aies pas utilisé map ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    my @a_valider=($root_dir, $data_dir, $processed_dir) ;
    my @a_creer=grep { not -e $_ } @a_valider;
    map { &createDir($_) } @a_creer;
     
    sub createDir($)
    {
        my ($dir) = @_;
        mkdir $dir;
        print "$dir folder created ";
    }

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  4. #4
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par MarneusCalgarXP
    Je suis étonné que tu n'aies pas utilisé map ^^
    La raison en est toute simple (mais je me demande si je ne vais pas finir par rédiger un article sur grep, map et foreach) : map a un double intérêt qui est de traiter tous les éléments, d'une part, et d'autre part de retourner le résultat de ce traitement sous forme de liste. Foreach, à contrario, parcourt tout, mais ne retourne rien.

    Ayant supposé (à tort, certainement dans une bonne pratique) que le résultat du mkdir et du print était négligeable, je les ai traité à coup de foreach (lazyness programming ...).

    Utiliser la syntaxe avec map a un ENORME intérêt si la fonction &create_dir retourne une valeur. Cela permet alors de conserver une liste de ces valeurs.

    Bien ouéj.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  5. #5
    Membre averti
    Avatar de Konrad Florczak
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 242
    Points : 336
    Points
    336
    Par défaut
    Un grand merci pour la qualité de vos réponses. C'est vraiment rare de voir autant de précisions et d'explications.
    Vite que mon projet se termine pour que je m'y mette vraiment !
    Avant de poster consultez la recherche avancée du forum
    N'oubliez pas le bouton

    Formation LaTeX et Outils Pratiques

    C'est ce que nous pensons déjà connaître qui nous empêche souvent d'apprendre.

Discussions similaires

  1. Optimiser un petit morceau de code
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/04/2008, 16h49
  2. Optimiser mon code ASP/HTML
    Par ahage4x4 dans le forum ASP
    Réponses: 7
    Dernier message: 30/05/2005, 10h29
  3. optimiser le code
    Par bibi2607 dans le forum ASP
    Réponses: 3
    Dernier message: 03/02/2005, 14h30
  4. syntaxe et optimisation de codes
    Par elitol dans le forum Langage SQL
    Réponses: 18
    Dernier message: 12/08/2004, 11h54
  5. optimisation du code et var globales
    Par tigrou2405 dans le forum ASP
    Réponses: 2
    Dernier message: 23/01/2004, 10h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo