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 :

Optimisation de code


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 99
    Points
    99
    Par défaut Optimisation de code
    J'ai un petit bout de code dont je souhaiterais améliorer le fonctionnement pour aller plus vite

    voici la chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
       foreach my $key(keys %hash) {
       if ( $key !~ /res/ ) {
             my $word                = $hash{$key}[0];
             my $occurence           = $hash{$key}[1];
             my $densite             = $hash{$key}[2];
             my $meta                = $hash{$key}[3];
             my $meta_title          = $hash{$key}[4];
             my $meta_keywords       = $hash{$key}[5];
             my $meta_description    = $hash{$key}[6];
     
              [trop long]
         }
       }
    le fait de faire foreach et if font perdre un temps énorme d'autant que la table peut parfois être tout bonnement gigantesque.

    J'ai essayé de trouvé une alternative fonctionnant pareil mais beaucoup plus rapiden mais...

    merci de votre aide

  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 Re: Optimisation de code
    Je ne suis pas sûr que ce soit plus rapide, mais une autra approche serait la sélection préalable des clefs à traiter, et leur traitement dans une seconde passe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    my @res_keys = grep { /res/ } keys (%hash);
    foreach my $res_key (@res_keys) {
      my ($word, $occurence, $densite, $meta, $meta_title, $meta_keywords, $meta_description) = $hash{$res_key}[0..6];
    }
    Ca fait finalement deux boucles... celle du grep et le foreach
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    à tout hasard 2eurocents, passer la référence peut-il être plus rapide que de passer la donnée dans la variable (surtout si la hash est grande) ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 99
    Points
    99
    Par défaut
    Oui le hash est gigantesque certaine il contient plusieurs milliers, voir millions de valeurs

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 111
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par Mr6
    à tout hasard 2eurocents, passer la référence peut-il être plus rapide que de passer la donnée dans la variable (surtout si la hash est grande) ?
    Tout à fait d'accord.

    J'ai eu plusieurs fois l'expérience d'un script qui tournait bp plus vite avec des références.
    Michaël Hooreman

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 99
    Points
    99
    Par défaut
    Je compred po comment tu fait pour passer par les références , pour mon code. Aurait tu un exemple s'il te plait.

    mici

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 111
    Points : 142
    Points
    142
    Par défaut
    Pas de référence:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my %h;
    $h{a}='toto';
    $h{b}='titi';
    Référence:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my $h;
    $h->{a}='toto';
    $h->{b}='titi';
    Michaël Hooreman

Discussions similaires

  1. optimiser le code d'une fonction
    Par yanis97 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/07/2005, 08h41
  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