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] qu'est-ce qui est plus rapide : un echo ou un affichage pur HTML ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Par défaut [Système] qu'est-ce qui est plus rapide : un echo ou un affichage pur HTML ?
    Bonjour,

    suposons que j'ai une grosse page HTML dans laquelle je dois insérer/concaténer juste une valeur dynamique, genre un $toto.

    qu'est-ce que sera plus rapide à l'exécution:

    une fonction qui renvoie ça :
    echo "<HTML>...etc ".$toto ."..suite HTML</html>";

    ou bien un fichier .php ainsi :
    <HTML>
    ...etc
    <?php echo $toto";?>
    ..suite HTML
    </html>";

    ? une idée ?
    un ami m'a dit "arrête de générer de l'affichage HTML si ya pas de dynamisme PHP dedans ça ralentira son exécution et surchagera apache pour rien"
    raison pas raison ?

  2. #2
    Membre chevronné Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Par défaut
    Salut,

    c'est sur que si tu n'as que quelques variables php à afficher ça ne sert à rien de tout afficher en php.
    Mais de toutes façon ça ne doit pas changer grand chose !! fais un petit test, il y a des script de test pour cela, ils te disent en combien de temps ta page a été générée.
    Sinon, plus simple mais plus aléatoire peut-être, sur firefox utilise l'addon FasterFox

    P.S : dans ton exemple, tu écris cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo "<HTML>...etc ".$toto ."..suite HTML</html>";
    encore mieux, écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo "<HTML>...etc $toto ..suite HTML</html>";
    En php, ce qui est entre guillemet est interprété, ce qui est entre quote ne l'est pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $a="pierre";
    echo "Salut $a, ça va ?";
    //Affichera Salut pierre ça va ?
    echo 'Salut $a, ça va ?';
    //Affichera Salut $a, ça va ?
    Bons tests

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    en ce qui concerne echo, le plus rapide c'est les simples guillemets, sans concaténation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<html>...etc ', $toto ,'..suite HTML</html>';
    mais pour ta question, cela dépend vraiment du nombre de $toto que tu désires afficher, et de ce qu'il représente par rapport au reste de la page (à savoir le etc et le suite)

    s'il n'y a qu'un seul $toto, il vaut mieux tout afficher en html et n'afficher que $toto en php

  4. #4
    Membre expérimenté
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 181
    Par défaut
    Citation Envoyé par francis m
    en ce qui concerne echo, le plus rapide c'est les simples guillemets, sans concaténation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<html>...etc ', $toto ,'..suite HTML</html>';
    Non, il me semble que la syntaxe guillemets simples + concaténation est bien la syntaxe la plus rapide.

    L'inconvénient de la concaténation est qu'elle produit une nouvelle chaîne de caractères en mémoire, mais il n'y a qu'un seul "appel" à echo.
    Alors que la syntaxe utilisant la virgule va fermer et rouvrir le flux à chaque fois, ce qui équivaut à "appeler" plusieurs fois echo. Au final ça consomme beaucoup plus de ressources.
    Fais des tests, avec un grand nombre d'itérations utilisant les deux formes d'echo, tu verras


    Bon, je rebondis sur le sujet du topic pour poser à mon tour une question :
    Est-ce qu'utiliser à plusieurs reprises les balises <?php ... ?> dans un même script a une incidence sur le temps d'exécution (je demande par là si ça ralentit l'interpréteur de fermer la balise php pour la rouvrir plus loin) ?

    Merci

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 347
    Par défaut ok
    Bon, je rebondis sur le sujet du topic pour poser à mon tour une question :
    Est-ce qu'utiliser à plusieurs reprises les balises <?php ... ?> dans un même script a une incidence sur le temps d'exécution (je demande par là si ça ralentit l'interpréteur de fermer la balise php pour la rouvrir plus loin) ?

    Merci
    ça me rappelle une autre interrogation

    est-ce que ceci dans test.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?PHP
    echo "<html><body><table>";
    for ($i=0;$i++;$i<1000)
          {
          echo "<tr><td>ligne $i de tableau </td></tr>";
          }
     
    echo "</table></body></html>";
    ?>
    est plus rapide que ceci dans test2.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <html><body><table>
    <?PHP for ($i=0;$i++;$i<1000) { ?>
    <tr><td>ligne <?PHP echo $i;?> de tableau </td></tr>
    <?PHP } ?>
    </table></body></html>

    alors ? est-ce qu'un appel de balise PHP est plus gourmand en performance que 2000 appels ? Je parle biensur dans le cadre d'un grand nombre de boucle s.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    Citation Envoyé par Haze.
    Non, il me semble que la syntaxe guillemets simples + concaténation est bien la syntaxe la plus rapide.

    L'inconvénient de la concaténation est qu'elle produit une nouvelle chaîne de caractères en mémoire, mais il n'y a qu'un seul "appel" à echo.
    Alors que la syntaxe utilisant la virgule va fermer et rouvrir le flux à chaque fois, ce qui équivaut à "appeler" plusieurs fois echo. Au final ça consomme beaucoup plus de ressources.
    Fais des tests, avec un grand nombre d'itérations utilisant les deux formes d'echo, tu verras
    Pas d'accord : je viens de faire le test avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function microtime_float() 
    	{  
    	list($usec, $sec) = explode(" ", microtime());
    	return ((float)$usec + (float)$sec);
    	}
    $t1 = microtime_float();
    for ($i=0; $i<1000000; $i++) echo 'a', 'b', ' ';
    $t2 = microtime_float();
    echo $t2-$t1;
    $t1 = microtime_float();
    for ($i=0; $i<1000000; $i++) echo 'c'. 'd'. ' ';
    $t2 = microtime_float();
    echo $t2-$t1;
    la première solution avec les virgules a pris 0.5300 sec, la seconde avec concaténation a pris 0.6294 s, soit 20% de temps en plus (bon c'est toujours moins d'une seconde...)

  7. #7
    Membre expérimenté
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 181
    Par défaut
    @ francis m :
    Hum, j'ai copié collé ton script sans le modifier, et j'obtiens 8,19 secondes pour la syntaxe utilisant les virgules, et seulement 3.17 secondes pour la concaténation, qui est donc plus de deux fois et demi plus rapide.

    Et je trouve tes chiffres étonnamment courts : tu exécutes 2 millions d'itérations en 1.15 secondes ?!

    De plus, les tutoriels vantant les mérites de la concaténation avec echo sont beaucoup plus récurrents que ceux prônant l'emploi des virgules, je ne crois pas que ce soit une coïncidence .

    @ USA Mike :
    Déjà utilise des apostrophes au lieu des guillemets, car PHP en vas pas aller à la recherche de variables éventuellement contenues dans la chaîne.
    Personnellement, ce qui me semble le plus optimisé est :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <html><body><table>
    <?PHP
    for ($i=0;$i++;$i<1000) {
        echo '<tr><td>ligne '.$i.' de tableau</tr></td>';
    }
    ?>
    </table></body></html>

Discussions similaires

  1. qu'est-ce qui est plus rapide, une test = ou un != ?
    Par Invité dans le forum Général Python
    Réponses: 5
    Dernier message: 16/08/2012, 15h46
  2. Réponses: 5
    Dernier message: 20/02/2010, 19h36
  3. Qu'est ce qui est le plus rapide
    Par Haku64 dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 13/02/2010, 12h08
  4. Réponses: 16
    Dernier message: 19/05/2005, 16h20
  5. [FB1.5]Quelle est la requete la plus rapide ?
    Par Sitting Bull dans le forum SQL
    Réponses: 4
    Dernier message: 10/12/2004, 13h46

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