Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1599 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  optimisation : echo ou html

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

optimisation : echo ou html

n°1251711
fabs2b
Posté le 23-11-2005 à 17:26:00  profilanswer
 

Bonjour, je me demande si il vaut mieux faire des echo ou du code html si c'est possible.
La reponse semble evidente, mais je voudrais savoir si quelqu'un a reellement tester cela et si le gain de l'execution de la page est vraiment sigificant.
 
En gros remplacer ceci :

Code :
  1. echo '<a href="'.$url.'">lien</a>';


Par  

Code :
  1. <a href="<?=$url;?>">lien</a>


 
Etendre cet exemple a un site tout entier bien sur...
Merci de vos reflexions.

Message cité 1 fois
Message édité par fabs2b le 23-11-2005 à 17:26:22
mood
Publicité
Posté le 23-11-2005 à 17:26:00  profilanswer
 

n°1251714
soju
One shot !
Posté le 23-11-2005 à 17:30:32  profilanswer
 

il vaut mieux

Code :
  1. echo '<a href="',$url,'">lien</a>';

que

Code :
  1. echo '<a href="'.$url.'">lien</a>';


 
après pour le reste je ne sais pas, tu peux faire un benchmark

n°1251722
fabs2b
Posté le 23-11-2005 à 17:37:30  profilanswer
 

Je vois pas trop de differences entre les deux codes....  :pt1cable:

n°1251723
mechkurt
Posté le 23-11-2005 à 17:37:57  profilanswer
 

concaténation avec , au lieu de .


---------------
D3
n°1251743
fabs2b
Posté le 23-11-2005 à 18:09:40  profilanswer
 

ah ben oui, j'ai lu trop vite.
Oui l'histoire de la virgule je connaissais, je vais faire un bench pour voir ca
Et pour les echo ?

n°1251777
art_dupond
je suis neuneu... oui oui !!
Posté le 23-11-2005 à 19:01:21  profilanswer
 

youp,
 
 
c'est quo l'histoire des virgules ?
 
http://www.google.fr/search?hl=fr& [...] ogle&meta= ne donne rien :whistle:

n°1251778
esox_ch
Posté le 23-11-2005 à 19:02:41  profilanswer
 

La virgule c'est justement pas une concatenation :o
 
Parcontre pour le echo ou <?=$var;?> a mon avi c'est kif kif mais faudrait voir avec un bench... A noter que le problème ne se pose pas si on fait une separation des couches


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1251779
art_dupond
je suis neuneu... oui oui !!
Posté le 23-11-2005 à 19:03:06  profilanswer
 

ok trouvé :ange:  
 
 

Code :
  1. <?php
  2. echo "2 + 2 = " . 2+2; // This will print 4
  3. echo "2 + 2 = " , 2+2; // This will print 2+2 = 4
  4. ?>


 
 
edit: enfin non, c'est pas très clair.
 
je comprends pas le premier echo :cry:

Message cité 1 fois
Message édité par art_dupond le 23-11-2005 à 19:04:32
n°1251787
omega2
Posté le 23-11-2005 à 19:12:01  profilanswer
 

en gros, un echo avec des "." dit "je rajoute le premier au second (et ainsi de suite) et  j'envois ensuite le résultat une fois la chaine ou le nombre calculé"
un echo avec des "," dira j'envois chaque élément l'un aprés l'autre sans créer de chaine intermédiaire.
On gagne donc du temps dans le second cas vu qu'on demande moins de boulot à php.

n°1251788
fabs2b
Posté le 23-11-2005 à 19:12:13  profilanswer
 

esox_ch a écrit :

A noter que le problème ne se pose pas si on fait une separation des couches


 
Separation des couches  :pt1cable:  
C'est a dire ? faut quand meme un echo qq part ? non ?


Message édité par fabs2b le 23-11-2005 à 19:12:40
mood
Publicité
Posté le 23-11-2005 à 19:12:13  profilanswer
 

n°1251790
masklinn
í dag viðrar vel til loftárása
Posté le 23-11-2005 à 19:14:51  profilanswer
 

art_dupond a écrit :

ok trouvé :ange:  
 
 

Code :
  1. <?php
  2. echo "2 + 2 = " . 2+2; // This will print 4
  3. echo "2 + 2 = " , 2+2; // This will print 2+2 = 4
  4. ?>


 
 
edit: enfin non, c'est pas très clair.
 
je comprends pas le premier echo :cry:


"." va créer la chaîne "2+2=", va créer la chaîne "4" (2+2 transformé en string), puis va créer la chaîne "2+2=4" (par concaténiation) qui va être envoyée à echo.
 
"," va créer la chaîne "2+2=", va créer l'entier 4 (2+2) et va envoyer les deux à echo
 
=> avec la 2e méthode, on évite la création d'une à deux chaînes de caractères, donc on gagne légèrement en vitesse d'exécution.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1251804
soju
One shot !
Posté le 23-11-2005 à 19:28:04  profilanswer
 

masklinn a écrit :

"." va créer la chaîne "2+2=", va créer la chaîne "4" (2+2 transformé en string), puis va créer la chaîne "2+2=4" (par concaténiation) qui va être envoyée à echo.

dans ce cas là non, ça affiche 4
 
EDIT : en fait il concatène puis fais l'addition
1) '2+2=' . 2 = '2+2=2'
2) '2+2=2' + 2 = 4
ça donne 4 car intval('2+2=2')=2
 
 

Message cité 2 fois
Message édité par soju le 23-11-2005 à 19:37:31
n°1251810
masklinn
í dag viðrar vel til loftárása
Posté le 23-11-2005 à 19:34:22  profilanswer
 

soju a écrit :

dans ce cas là non, ça affiche 4


[:petrus75]
 
Ah ouais, je pige pas la logique là par contre [:petrus75]
mais

echo "2 + 2 = " . (2+2);


fait bien ce que je lui demande [:petrus75]
De même que

echo "2 + 2 = " . 4;


Quelqu'un peut m'expliquer le comportement de la chaîne initiale [:petrus dei]

Message cité 1 fois
Message édité par masklinn le 23-11-2005 à 19:35:27

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1251813
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 23-11-2005 à 19:39:02  profilanswer
 

Pour répondre à la première question, l'HTML est préférable pour la simple et bonne raison que même un echo aussi ridicule soit-il passera par l'interpréteur PHP.
Le gain doit être ridicule, mais bon.

n°1251814
soju
One shot !
Posté le 23-11-2005 à 19:39:11  profilanswer
 

masklinn a écrit :

Quelqu'un peut m'expliquer le comportement de la chaîne initiale [:petrus dei]

oui j'ai eu du mal à comprendre aussi [:petrus dei]
voir explication dans mon précédent post que j'ai édité  :)  

n°1251821
soju
One shot !
Posté le 23-11-2005 à 19:48:08  profilanswer
 

The-Shadow a écrit :

un echo aussi ridicule soit-il passera par l'interpréteur PHP

fabs2b a écrit :

Code :
  1. <a href="<?=$url;?>">lien</a>


ça aussi ça passe par l'interpréteur php  
 
 
 

n°1251822
masklinn
í dag viðrar vel til loftárása
Posté le 23-11-2005 à 19:54:57  profilanswer
 

soju a écrit :

dans ce cas là non, ça affiche 4
 
EDIT : en fait il concatène puis fais l'addition
1) '2+2=' . 2 = '2+2=2'
2) '2+2=2' + 2 = 4
ça donne 4 car intval('2+2=2')=2


[:mlc]
 
[:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1251824
soju
One shot !
Posté le 23-11-2005 à 20:00:01  profilanswer
 


http://fr.php.net/manual/fr/langua [...] ggling.php
http://fr.php.net/manual/fr/langua [...] conversion

Citation :

Le transtypage n'a pas toujours un résultat prévisible lors du transtypage entre certains types.

n°1251831
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 23-11-2005 à 20:08:30  profilanswer
 

soju a écrit :

ça aussi ça passe par l'interpréteur php


Seulement le petit bout entre les balises PHP.
Il vaut mieux :

Code :
  1. <img src="<?php echo $monimage; ?>" alt="Texte alternatif à mon image" width="250" height="300" title="ouah mon tooltip" />


que

Code :
  1. echo '<img src="',$monimage,'" alt="Texte alternatif à mon image" width="250" height="300" title="ouah mon tooltip" />';


 

n°1251834
masklinn
í dag viðrar vel til loftárása
Posté le 23-11-2005 à 20:15:53  profilanswer
 

The-Shadow a écrit :

Seulement le petit bout entre les balises PHP.


Hum, je ne sais pas exactement comment se comporte l'interpréteur PHP, mais les JSP comme les mods (mod_perl et mod_python) fonctionnent comme ça:

  • On transforme l'intégralité du fichier en code
  • On passe le tout à travers l'interpréteur
  • On balance la sortie de l'interpréteur au serveur web


Donc un code du style

Ceci est un <%=test%>


Est transformé en

print "Ceci est un"+test


(ou un truc du style, après ça dépend des langages)
 
Je fais 2-3 recherches, mais je suis pas sûr que PHP soit très différent.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1251963
leflos5
On est ou on est pas :)
Posté le 23-11-2005 à 23:16:31  profilanswer
 

Au delà de gagner un poil de cul de millième de sconde, c'est illisible les echo à tout va ou les tags php paumés dans un code html ;)

n°1251966
masklinn
í dag viðrar vel til loftárása
Posté le 23-11-2005 à 23:18:55  profilanswer
 

leflos5 a écrit :

Au delà de gagner un poil de cul de millième de sconde, c'est illisible les echo à tout va ou les tags php paumés dans un code html ;)


Tout éditeur syntaxique de qualité est capable de reconnaître et de colorer de manière spécifique un contenu situé entre "<%= %>" ou "<?= ?>", et donc de le rendre extrèmement lisible au sein d'un source HTML brut [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1251975
leflos5
On est ou on est pas :)
Posté le 24-11-2005 à 00:01:58  profilanswer
 

masklinn a écrit :

Tout éditeur syntaxique de qualité est capable de reconnaître et de colorer de manière spécifique un contenu situé entre "<%= %>" ou "<?= ?>", et donc de le rendre extrèmement lisible au sein d'un source HTML brut [:spamafote]


C'est pas plus clair pour autant ;) Les pages html avec du php tous les 6 mots c'est illisible, surchargé en <?
C'est pas de repérer le php, c'est la lisibité générale du truc ;)
 
Je trouve ça stupide sur le principe de conception surtout...

n°1251983
masklinn
í dag viðrar vel til loftárása
Posté le 24-11-2005 à 00:28:44  profilanswer
 

Je ne vois pas où j'ai parlé de "mettre du PHP tous les 6 mots" dans mes posts [:pingouino]
 
Mais bon [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1251984
0x90
Posté le 24-11-2005 à 00:29:51  profilanswer
 

euh, php met vraiment le . avec une précédence supérieure au + ? :s
( si y'a une raison valable qu'on m'explique, au premier abord j'ai un peu du mal ... )


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1251985
masklinn
í dag viðrar vel til loftárása
Posté le 24-11-2005 à 00:31:09  profilanswer
 

0x90 a écrit :

euh, php met vraiment le . avec une précédence supérieure au + ? :s


Il semblerait, l'explication de soju colle parfaitement avec les résultats des expériences [:sisicaivrai]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1252096
cinocks
Posté le 24-11-2005 à 10:54:13  profilanswer
 

leflos5 a écrit :

Au delà de gagner un poil de cul de millième de sconde, c'est illisible les echo à tout va ou les tags php paumés dans un code html ;)


 
Je pense aussi qu'il y a beaucoup mieux à faire comme optimisation que jouer avec un echo. Et je ne suis pas convaincu par le l'usage de ',' à la palce de '.'. Au final la chaine est bien concatenée qq part. Si ce n'est pas PHP qui le fait ce sera un autre. Par contre, c'est sur le script PHP sera plus 'rapide'. Mais ca prendre plus de temps chez l'autre.
 
Y'a d'autres optimisations à faire avant de se pencher là-dessus. :ange:


---------------
MZP est de retour
n°1252107
soju
One shot !
Posté le 24-11-2005 à 11:08:13  profilanswer
 

cinocks a écrit :

Et je ne suis pas convaincu par le l'usage de ',' à la palce de '.'. Au final la chaine est bien concatenée qq part.

non, la chaine n'est pas concaténée, il suffit de faire un bench pour s'en convaincre (en moyenne 2 fois plus rapide avec des chaines de petite taille)

cinocks a écrit :

Y'a d'autres optimisations à faire avant de se pencher là-dessus. :ange:

on est bien d'accord  :)  

n°1252140
cinocks
Posté le 24-11-2005 à 11:32:14  profilanswer
 

soju a écrit :

non, la chaine n'est pas concaténée, il suffit de faire un bench pour s'en convaincre (en moyenne 2 fois plus rapide avec des chaines de petite taille)
on est bien d'accord  :)


 
ai-je dis que la concatenation etait faite par PHP? ;) Le bench mesure l'execution du PHP. Il ne prend en compte l'ensemble de la chaine.
 
D'ailleurs je me souviens d'un site ayant fait des benchs. Quelle etait l'adresse?


---------------
MZP est de retour
n°1252148
omega2
Posté le 24-11-2005 à 11:44:08  profilanswer
 

Certe la cocaténation ne sera pas faite par php, mais ca évitera à php de créer une chaine de caractére intermédiaire, opération demandant un certain nombre de ressources systémes (allocation/désalocation de mémoire et copie des données dans la chaien plus grande) alors qu'apache dispose surement de bloc mémoire où stocker ça sans avoir besoin de faire une partie de ces étapes. En plus apache, n'a besoin de gérer qu'un seul pointeur pour écrire ces données en mémoire alors que php risque d'en utiliser plusieurs si les différentes étapes de la création de la chaine nécessitent une zone plus grande que prévus.
 
Enfin bref, c'est vrai que la différence ne sera pas resentis par le visiteur et que c'est pas par là qu'il faut commencer les optimisations. Mais si on commence à peine un gros programme php, ca peut valoir le coup de prendre cette habitude dés le début.
 
PS : Le mieux serait d'utiliser le bench apache, comme ça, on poura voir si on gagne du temps au final ou pas.

n°1252154
cinocks
Posté le 24-11-2005 à 11:52:39  profilanswer
 

Oki.
 
Pour le benchs apache, Il faudrait le faire sur des milliers d'iterations.


---------------
MZP est de retour
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  optimisation : echo ou html

 

Sujets relatifs
validator htmlj'ai le code source des page html qui s'affiche en local
Fonction pour pour convertir le code HTMLFormat d'un mail HTML ou pas ?
Aide pour site en htmlexporter un tableau HTML vers Excel
optimisation[CSS+HTML]Probleme d'affichage FireFox
impossibilité lire video html[Javascript] position X et Y d'une balise HTML [Résolu]
Plus de sujets relatifs à : optimisation : echo ou html


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR