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 :

Optimiser vos scripts [Débat]


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 111
    Par défaut
    Citation Envoyé par Woufeil
    Un exemple simple est l'utilisation de boucles foreach à la place de boucle for. Sans avoir fais de benchmark, je pense que pour le traitement élémént par élément d'un tableau (ou même mieux d'un hachage) la boucle foreach est plus performante (sinon elle n'aurait pas été inventée).
    Sans vouloir entrer dans la polémique, j'ai toujours cru (cfr camel book) que for et foreach étaient synonymes.

  2. #2
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Bah je pense pas non, la syntaxe est totalement différente et on peut pas utiliser un foreach à la place d'un for dans tous les cas (mais un for peut toujours remplacer un foreach il me semble).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #Boucle pour utiliser chaque élément d'un tableau avec for
    for (my $i=0;$i<$#tab;$i++)
    {#faire quelque chose avec $tab[$i]
    }
    #La même avec foreach
    foreach my $elem (@tab)
    {#faire quelque chose avec $elem
    }
    Je pense que si elle a été créée, c'est que la seconde boucle doit être plus optimisée que la première...
    D'ailleurs la documentation de Sylvain Lhuillier dit ceci :
    Cette instruction permet de parcourir une liste. Son implémentation optimisée dans l'interpréteur Perl rend son usage bien plus efficace qu'un parcours qui utiliserait une variable indicielle incrémentée à chaque tour d'une boucle for.
    Enfin, c'est mon avis en tout cas

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 107
    Par défaut
    Bonsoir.

    Je pense comme mhooreman que for et foreach sont rigoureusement synonymes.

    Voyez cet exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    #!/usr/bin/perl -w
     
     
    use utf8;
    use Tk;
    use warnings;
    use strict;
     
     
    my $mw = MainWindow->new;
     
     
    my @tableau = (10, 20, 30);
     
    my $somme = 0;
     
     
    foreach (my $i = 0; $i <= 2; ++$i) # Ceci montre qu'on peut mettre foreach là où on peut mettre for.
    {
      $somme += $tableau[$i];
    }
     
    $mw->messageBox(-message => $somme,);
     
     
    $somme = 0;
     
    for my $element (@tableau) # Ceci montre qu'on peut mettre for là où on peut mettre foreach.
    {
      $somme += $element;
    }
     
    $mw->messageBox(-message => $somme,);
    La première boucle (foreach), qui utilise un indiçage numérique, mérite les mêmes critiques qu'un for qui utiliserait lui aussi cet indiçage.

    La second boucle (for), qui n'utilise pas d'indiçage numérique, mérite les mêmes éloges qu'un foreach qui n'en utiliserait pas non plus.

  4. #4
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Après relecture du Camel Book, il me sembe que c'est effectivement le cas. Ca m'étonne beaucoup que Sylvain Lhuillier se soit trompé, mais cela semble être le cas...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 107
    Par défaut
    Citation Envoyé par Woufeil
    Après relecture du Camel Book, il me sembe que c'est effectivement le cas. Ca m'étonne beaucoup que Sylvain Lhuillier se soit trompé, mais cela semble être le cas...
    Je ne sais pas si Sylvain Lhuillier s'est trompé : il n'en a pas à for ou à foreach, il critique l'indiçage numérique, et l'indiçage numérique est aussi critiquable avec foreach qu'avec for, je crois.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Par défaut
    Bonsoir,

    Un bon départ pour l'optimisation des scripts Perl c'est de lire et d'appliquer ce qu'on trouve dans
    Programmation en Perl, Editions O'Reilly le chapitre 24 - Techniques couramment employées - Efficacité

    lami20j

Discussions similaires

  1. [MySQL] Optimisation de scripts PHP/MySQL
    Par DgG dans le forum PHP & Base de données
    Réponses: 368
    Dernier message: 20/11/2013, 18h59
  2. Le temps d'exécution de vos scripts perl!!
    Par djibril dans le forum Langage
    Réponses: 5
    Dernier message: 17/06/2009, 10h42
  3. [Oracle] Optimisation de script
    Par johnkro dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 12/07/2006, 10h33
  4. [Débutant] Accélérer et optimiser ses scripts PHP
    Par Metallic-84s dans le forum Langage
    Réponses: 6
    Dernier message: 24/03/2006, 12h37
  5. [MySQL] [Script]Optimisation de scripts Php/MySQL (2)
    Par copy dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/08/2004, 08h33

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