Sujet : [php] Optimisation vitesse de création page |
omega2 |
Freekill a écrit a écrit :
Pour résumer, corrigez-moi si je me trompes:
- Il ne sert à rien d'envoyer la page en une seule fois (une variable, un echo), autant ne faire ne php que les parties dynamiques de la page avec des echos à chaque fois.
|
Ca dépends, il est vrai que d'envoyer en plusieurs fois permet parfois de faire patienter un peu plus le navigateur. (comme il reçoit une partie de la page il reprends son compteur d'attente à zéro.)
Freekill a écrit a écrit :
- Il n'y a aucune raison au niveau perfs de ne pas travailler avec des includes pour les parties identiques de différentes pages.
|
Ca, je suis d'accord.
Freekill a écrit a écrit :
- Il faut surtout optimiser la connexion/deconnexion à une base de données et l'ouverture/fermeture de fichiers : pourrais-tu développer cela, __Lolo__ ? (exemples)
|
Rien à ajouter de mon côté si ce n'est que l'ouverture/fermeture d'un fichier fait travailler le disque et/ou le cache de l'OS. Pour l'ouverture/fermeture d'un accés à une base de donnée, ca oblige la base de donée en question à vérifier les droits d'accés de l'utilisateur et ce qui peut entrainer un accés au HDD. De plus, une ouverture de base de données dépense un peu de CPU et un peu de bande passante (je pense que ces dépences sont assez négligable pour la pluspart des sites)
Freekill a écrit a écrit :
- Des accès à de nombreux fichier (donc beaucoup d'ouverture & fermeture de fichier) de ralentir le code. (omega2, par ouverture et fermeture de fichiers je suppose que tu entends uniquement des fopen() et fclose()?)
|
C'était de ça que je parlais
Freekill a écrit a écrit :
- De nombreux accès à une base de donnée risquent de ralentir le code, essayer donc de faire des requêtes groupées?
|
Oui et surtout ne ramener si possible que les champs qui seront potentiellement utilisé dans le traitement qui suivra la requête.
Atention aussi à la perte de temps que peuvent entrainer les jointures dans certains cas. (y a t'il un pro des BDD dans la salle?)
Freekill a écrit a écrit :
- Les boucles inutiles ralentissent également le traimtement. omega2, peut-tu me donner un exemple de boucle "inutile"?
|
Les boucles en while servant à vérifier l'existance de certains cas. Si on fait passer un booléen de vrai à faux (ou l'inverse) quand on tombe sur un des cas dont on veux vérifier l'existance sans mettre ce booleen là dans la condition du while alors les passages suivant le changement d'êtat du bolleen correspondent à ce qu'on peu appeler une boucle inuutile.
Freekill a écrit a écrit :
- Pour accélérer un script, tu peux par exemple faire du cache, pour ne pas avoir à récupérer les memes infos à chaque affichage. -> krolours1 : sous quelle forme proposes-tu de faire ce cache? exemple?
|
Je lui laisse le soin de te répondre.
Freekill a écrit a écrit :
- Les fonctions récursives sont souvent plus lentes que des boucles -> Bon ça c'est logique, si une fonction intégrée fait ce qu'on veut, l'utiliser en priorité (genre 'for()' plutôt qu'une fonction récursive qui fait la même chose).
|
Freekill a écrit a écrit :
Merci pour vos réponses
|
De rien. |
omega2 |
Freekill a écrit a écrit :
Pour résumer, corrigez-moi si je me trompes:
- Il ne sert à rien d'envoyer la page en une seule fois (une variable, un echo), autant ne faire ne php que les parties dynamiques de la page avec des echos à chaque fois.
|
Ca dépends, il est vrai que d'envoyer en plusieurs fois permet parfois de faire patienter un peu plus le navigateur. (comme il reçoit une partie de la page il reprends son compteur d'attente à zéro.)
Freekill a écrit a écrit :
- Il n'y a aucune raison au niveau perfs de ne pas travailler avec des includes pour les parties identiques de différentes pages.
|
Ca, je suis d'accord.
Freekill a écrit a écrit :
- Il faut surtout optimiser la connexion/deconnexion à une base de données et l'ouverture/fermeture de fichiers : pourrais-tu développer cela, __Lolo__ ? (exemples)
|
Rien à ajouter de mon côté si ce n'est que l'ouverture/fermeture d'un fichier fait travailler le disque et/ou le cache de l'OS. Pour l'ouverture/fermeture d'un accés à une base de donnée, ca oblige la base de donée en question à vérifier les droits d'accés de l'utilisateur et ce qui peut entrainer un accés au HDD. De plus, une ouverture de base de données dépense un peu de CPU et un peu de bande passante (je pense que ces dépences sont assez négligable pour la pluspart des sites)
Freekill a écrit a écrit :
- Des accès à de nombreux fichier (donc beaucoup d'ouverture & fermeture de fichier) de ralentir le code. (omega2, par ouverture et fermeture de fichiers je suppose que tu entends uniquement des fopen() et fclose()?)
|
C'était de ça que je parlais
Freekill a écrit a écrit :
- De nombreux accès à une base de donnée risquent de ralentir le code, essayer donc de faire des requêtes groupées?
|
Oui et surtout ne ramener si possible que les champs qui seront potentiellement utilisé dans le traitement qui suivra la requête.
Atention aussi à la perte de temps que peuvent entrainer les jointures dans certains cas. (y a t'il un pro des BDD dans la salle?)
Freekill a écrit a écrit :
- Les boucles inutiles ralentissent également le traimtement. omega2, peut-tu me donner un exemple de boucle "inutile"?
|
Les boucles en while servant à vérifier l'existance de certains cas. Si on fait passer un booléen de vrai à faux (ou l'inverse) quand on tombe sur un des cas dont on veux vérifier l'existance sans mettre ce booleen là dans la condition du while alors les passages suivant le changement d'êtat du bolleen correspondent à ce qu'on peu appeler une boucle inuutile.
Freekill a écrit a écrit :
- Pour accélérer un script, tu peux par exemple faire du cache, pour ne pas avoir à récupérer les memes infos à chaque affichage. -> krolours1 : sous quelle forme proposes-tu de faire ce cache? exemple?
|
Je lui laisse le soin de te répondre.
Freekill a écrit a écrit :
- Les fonctions récursives sont souvent plus lentes que des boucles -> Bon ça c'est logique, si une fonction intégrée fait ce qu'on veut, l'utiliser en priorité (genre 'for()' plutôt qu'une fonction récursive qui fait la même chose).
|
Freekill a écrit a écrit :
Merci pour vos réponses
|
De rien. |