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 PHP Discussion :

[Système] serie d'echo ou stockage dans une variable


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de Pepito
    Profil pro
    Inscrit en
    Août 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2004
    Messages : 101
    Points : 57
    Points
    57
    Par défaut [Système] serie d'echo ou stockage dans une variable
    Ami(e) du jour, bonjour

    J'ai juste une petite question
    Est-il preferable de stocker les lignes de codes dans une variable et de faire un echo de la variable à la fin
    ou est-ce qu'il vaut mieux faire plusieurs echo d'affilé :

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo("<table>");
    echo("<tr><td>");
    echo("prout");
    echo("</td></tr>");
    echo("</table>");
    ou plutot faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sortie="<table>";
    $sortie.="<tr><td>";
    $sortie.="prout";
    $sortie.="</td></tr>";
    $sortie.="</table>";
     
    echo("$sortie");
    Est-ce qu'il y a une technique plus rapide :
    Qu'est-ce qu'il est preferable de faire :

    Merki
    Pepit'

  2. #2
    Membre expérimenté Avatar de LaChips
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 109
    Points : 1 482
    Points
    1 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ?>
    <table>
    <tr><td>
    prout
    </td></tr>
    </table>
    <?
    enfin il me semble car il n'y aura aucun traitement a effectuer par le serveur
    Ingénieur Multimédia - TMM Communication

  3. #3
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    dans la théorie, il vaut mieux limiter l'usage de fonctions, donc un seul echo est préférable, mais c'est de la théorie... fais un bench et ça m'étonnerait que tu vois une différence...

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 273
    Points : 322
    Points
    322
    Par défaut
    La solution à LaChips est la meilleure si tu veut afficher du texte brut.

    Si c'est interpereté, il vaut mieux la 2e solution (concaténer dans la variable puis afficher le tout)

  5. #5
    Membre du Club Avatar de Pepito
    Profil pro
    Inscrit en
    Août 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2004
    Messages : 101
    Points : 57
    Points
    57
    Par défaut
    Le code que j'ai mis est bidon. C'etait juste pour l'exemple et mettre en image les 2 techniques.

    Je prend note de ton avis ska-root
    Sinon qu'est-ce que tu appelles un "bench" :

    Merki
    Pepit'

  6. #6
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    un bench (benchmark) est un test de performance

    dans ton cas, cela pourrait être une boucle affichant un grand nombre de fonction echo() avec un décompte de temps en milli-secondes

    puis la même chose en concaténant les chaînes et une seule fonction echo() pour les comparer...

    donc j'en ai créer un pour l'exemple en php5 :
    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
     
    <?php
    $time_start = microtime(true);
    for ($i=0; $i<=3000; $i++) 
    {
    echo "la chaine";echo "la chaine";echo "la chaine";echo "la chaine";echo "la chaine";
    echo "la chaine";echo "la chaine";echo "la chaine";echo "la chaine";echo "la chaine";
    }
    $time_end = microtime(true);
    $time1 = $time_end - $time_start;
     
    $time_start=microtime(true);
    for ($i=0; $i<=3000; $i++) {
       $chaine="la chaine";$chaine.="la chaine";$chaine.="la chaine";
       $chaine.="la chaine";$chaine.="la chaine";$chaine.="la chaine";
       $chaine.="la chaine";$chaine.="la chaine";$chaine.="la chaine";$chaine.="la chaine";
       echo $chaine;
    }
    $time_end = microtime(true);
    $time2 = $time_end - $time_start;
     
    echo "<br /> avec echo a chaque fois : $time1\n";
    echo "<br /> avec concat a chaque fois : $time2\n";
    ?>
    conclusion :
    avec echo a chaque fois : 0.05415415763855
    avec concat a chaque fois : 0.2358820438385
    surprise ! eh oui, en y réfléchissant, ça doit être normal
    un echo est une fonction simple
    mais une concaténation est aussi une fonction,celle-ci est cachée derrière un assemblage d'opérateurs (.=) que l'interpréteur doit remplacer par
    $chaine = $chaine.$chaine;
    ce qui pourrait expliquer le temps plus long que pour une fonction simple.
    De plus, le fait de jouer sur l'allocation mémoire est peut-être plus lent que le stockage dans le buffer de sortie...

    à débattre...


  7. #7
    Membre du Club Avatar de Pepito
    Profil pro
    Inscrit en
    Août 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2004
    Messages : 101
    Points : 57
    Points
    57
    Par défaut
    C'est la plus belle demonstration que j'ai jamais vu !!
    Je garde donc la serie d'echo comme meilleur moyen !!

    Merci beaucoup.
    Pepit'

  8. #8
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut
    Merci pour se script , mais mes temps sont légérement differant

    avec echo a chaque fois : 0.0587441921234
    avec concat a chaque fois : 0.0450968742371

    avec echo a chaque fois : 0.0745260715485
    avec concat a chaque fois : 0.0475709438324

    A métre en consideration : Winamp (génération a partir de mon pc , donc le chargement du grafisme de fire fox est prix en compte .... )

    Puis merci pour la variable microtime(true) , je connaissai pas ....

    Puis , façon pour quelques ms de differance , cela ne sert a rien ( car le reste du script influras sur se temps ... ) , vaut mieu donc avoir un script que l'on comprend bien ...

  9. #9
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut
    précision qui peux expliquer la différence et elle sors du contexte de la programmation :

    echo genere pour le systeme une entré/sortie et pas concat !

    les entrée sortie sont de celle qui coute le plus en temps système par rapport au temps d'exécution processeur.

    on peut aussi se lancer dans un calcul complexe d'évaluation de performance d'un algorithme par rapport à un autre mais je crois que echo sera toujours plus lent et cette différence sera exponentielle en fonction du nombre d'entrée sortie ou de concaténation à réaliser.

    WD
    Je ne voudrais pas faire partie d'un club qui voudrait m'avoir moi pour membre.... [Grouchot Marx]
    Mais en tant que Marxiste, je playdoye pour le travail communautaire. C'est un paradoxe olympien ! Comprend qui peut !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/10/2011, 18h45
  2. Stockage dans une variable temporaire
    Par Audpidou911 dans le forum MATLAB
    Réponses: 6
    Dernier message: 19/01/2011, 12h11
  3. [MySQL] Stockage dans une variable apres la selection
    Par kitcarson23 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 07/12/2010, 11h45
  4. stockage dans une variable
    Par pseudobidon57 dans le forum Linux
    Réponses: 2
    Dernier message: 31/08/2007, 11h56
  5. Réponses: 13
    Dernier message: 16/01/2006, 15h48

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