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

PHP & Base de données Discussion :

Optimisation de scripts PHP/MySQL [Débat]


Sujet :

PHP & Base de données

  1. #201
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par -COil-
    Citation Envoyé par Linie
    Bon ben moi j'arrive comme un ch'veux sur la soupe avec pas mal de journée de retard mais j'ai une question :

    Pourquoi vous n'utilisai que des echo et jamais des print?

    Ca peut paraitre stupide mais si echo et plus performent que le print je prefeere tous changer maintenant plutot que tout a la fin de mon projet.
    C'est des queues de cerises.. Echo ca fait plutot basic pas beau... print est plus classe et en phase avec le reste des fonction php.
    Et bien détrompe toi... aussi étonant que cela puisse paraitre le echo est plus rapide... .. .

    Effectué avec 250.000 itérations

    Echo

    Temps : 4.9059 s
    Vitesse : 50.959 instructions par seconde


    Print

    Temps : 5.47369 s
    Vitesse : 45.673 instructions par seconde

    Qui plus est on s'en fout de faire classe () ou pas... l'interet c'est que ça soit fonctionel et performant... .. .

    @ tchaOo°

  2. #202
    Membre actif
    Homme Profil pro
    PDG
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : PDG
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 225
    Points
    225
    Par défaut
    Citation Envoyé par kankrelune
    Qui plus est on s'en fout de faire classe () ou pas... l'interet c'est que ça soit fonctionel et performant... .. .
    Le problème est de définir ce qu'est la performance ^^

    Tes itérations, tu les a faites sur des chaines courtes ou des chaines longues ?
    Y avait-il des paramètres à évaluer ou non ?

    D'après une discussion que j'avais suivit, echo versus print, l'echo est à utiliser quand on a beaucoup de mémoire disponible car il bufferise tout avant de l'afficher. Donc...
    echo: rapide et mémoire disponible importante
    print: un peu moins rapide (mais je ne suis pas convaincu) et "peu" de mémoire disponible.

  3. #203
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par dasdeb
    Tes itérations, tu les a faites sur des chaines courtes ou des chaines longues ?
    Y avait-il des paramètres à évaluer ou non ?
    Chaines courtes entre quote simple et sans variables... .. .

    Citation Envoyé par dasdeb
    D'après une discussion que j'avais suivit, echo versus print, l'echo est à utiliser quand on a beaucoup de mémoire disponible car il bufferise tout avant de l'afficher. Donc...
    echo: rapide et mémoire disponible importante
    print: un peu moins rapide (mais je ne suis pas convaincu) et "peu" de mémoire disponible.
    Tout à fait d'accord... .. .

    Ce qui m'a fait réagir c'est surtout la remarque sur faire plus classe... .. .

    @ tchaOo°

  4. #204
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Je reviens au résumé du post, deu pages plus tôt : que de conclusiosn hatives... Ne serait-ce que la précision de la mesure. Une solution mesurée plus rapide peut être plus lente à parser, ce qui ne peut être évalué par aucune boucle. Aucun ordre de grandeur n'est donné. Peu importe qu'une fonction soit 50 % plus rapide qu'une autre si son temps d'execution se compte en microsecondes.

  5. #205
    Membre éclairé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Points : 878
    Points
    878
    Par défaut
    J'ai fait quelque bench et voila ce que j'ai pu remarquer pour optimiser:

    pour les requettes de plusierus ligne sur une base de donné:

    mieu vaut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $req=mysql_query("SELECT * FROM `news` ORDER BY `id` DESC LIMIT 0,10");
      for($i=0;$i<10;$i++)   //Récupération de tout les champs des news
      {
       $row=mysql_fetch_array($req);
       $id[$i]=$row['id'];
       $Titrenews[$i]=$row['Titre'];
       $Posteur[$i]=$row['Posteur'];
       $Textenews[$i]=nl2br(str_replace("\\","",$row['news']));
       $Datenews[$i]=$row['Date'];
       $imggauchenews[$i]=$row['imagegauche'];
       $imgdroitenews[$i]=$row['imagedroite'];
       $typenews[$i]=$row['typenews'];
      }
    que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $res = mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT 0,10") or die (mysql_error()) ;
     while ( $row=mysql_fetch_array($res) ) {
        $id[]        = $row['id'] ;
        $Titrenews[] = $row['Titre'] ;
        $Posteur[]   = $row['Posteur'] ;
        $Textenews[] = nl2br(str_replace("\\","",$row['news'])) ;
        $Datenews[]  = $row['Date'] ;
        $imggauchenews[] = $row['imagegauche'] ;
        $imgdroitenews[] = $row['imagedroite'] ;
        $typenews[]  = $row['typenews'] ;
     }
    (il ya bien 10 résultat donc dans la BDD d'ou le 10 dans le for)


    2em truc que j'ai remarqué. SI vous inclué plusieurs fonctions dans votre pages. Il vaut mieu les mettres toutes dans une seul page et inclure celle-ci.

    J'ai gagné 8% en faisant ca. (juste pour en mettant 1 incolude au lieu de 5!).

    SInon j'ia constaté que de manière général tout les includes faisait perdre du temps. Par exmeple je mettais toute mes balise meta dans un include. J'ai essayé en mettant directement les meta sur la page et j'ai gagné 12%.

    Donc utiliser le moin d'include possible!! Sauf pour les parties qui seront succeptible d'étre modifier et qui apparaisse sur beaucoup de pages de votre site.
    manganimes (en construction) -
    zemanga

  6. #206
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Pour ce qui est de l'utilisation des boucles for au lieu de while dans une requete le gain nest pas franchement consèquent. D'après ce que j'ai pu tester, sur 30 000 lignes, le gain est de 0.05 sec... Ce n'est pas cela qui me fera changer de méthode lol

    Sinon je suis un peu etonné par ceci
    SInon j'ia constaté que de manière général tout les includes faisait perdre du temps. Par exmeple je mettais toute mes balise meta dans un include. J'ai essayé en mettant directement les meta sur la page et j'ai gagné 12%.
    12 % ? Sur combien de temps d'execution global ? C'est quoi ton environement de test ?

    Je précise que j'ai testé en PHP5.. C'est peut etre idfférent en php 4.

  7. #207
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 154
    Points : 144
    Points
    144
    Par défaut
    est ce qu'il y a une fonction qui retourne le temps d'affichage de la page pour pouvoir connaitre le temps qu'il a fallu pour afficher une page, ou alors des site qui "bench" ca

  8. #208
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    oui d'ailleurs ePoX est au courant je pense :
    http://www.developpez.net/forums/sho...614#post492614
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  9. #209
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 154
    Points : 144
    Points
    144
    Par défaut
    merci beaucoup

  10. #210
    Membre éclairé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Points : 878
    Points
    878
    Par défaut
    Citation Envoyé par ePoX
    Pour ce qui est de l'utilisation des boucles for au lieu de while dans une requete le gain nest pas franchement consèquent. D'après ce que j'ai pu tester, sur 30 000 lignes, le gain est de 0.05 sec... Ce n'est pas cela qui me fera changer de méthode lol

    Sinon je suis un peu etonné par ceci
    SInon j'ia constaté que de manière général tout les includes faisait perdre du temps. Par exmeple je mettais toute mes balise meta dans un include. J'ai essayé en mettant directement les meta sur la page et j'ai gagné 12%.
    12 % ? Sur combien de temps d'execution global ? C'est quoi ton environement de test ?

    Je précise que j'ai testé en PHP5.. C'est peut etre idfférent en php 4.
    Je me suis fait un petit script qui récupert le temps d'affichage de la page. Je fais plusieurs rafraichissement automatique et je fais la moyenne jusqu'a une certaine précision (ce qui fait a peu pres 300 rafraichissement).
    J'ai fait ca 3 fois et j'en ai fait la moyenne. Je pense donc que les valeurs ne sont pas trop fausse. Sinon j'ai fait le test sous easyphp en php4.

    Aussi mes pages sont compressé avec gzip. (que je conseille, 80% de gaon !!!).
    manganimes (en construction) -
    zemanga

  11. #211
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Death83 : pour "mesurer" les includes, ta méthode n'est pas bonne : tu ne tiens pas compte du temps de "parsing" du script principal !

    Si tu veux vraiment comparer, ce n'est pas via PHP qu'il faut le faire... ou alors ajoute systématiquement un niveau d'inclusion.

    Après il y a de très nombreux facteurs qui peuvent entrer en jeu (version de PHP, cache disque, et surtout cache d'opcode).
    Google is watching you !

  12. #212
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    C'est quoi sa les opcode ?

  13. #213
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Citation Envoyé par ePoX
    C'est quoi sa les opcode ?
    Ton script php avant d'être éxécuté est "compilé". Le cache d'opcode permet à ton serveur php d'utiliser la version déjà "compilé" sans être obligé de recommencer à partir des sources php à compiler.

    Enfin il me semble, corrigez moi si je me trompe.

  14. #214
    Membre éclairé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Points : 878
    Points
    878
    Par défaut
    Citation Envoyé par Kioob
    Death83 : pour "mesurer" les includes, ta méthode n'est pas bonne : tu ne tiens pas compte du temps de "parsing" du script principal !

    Si tu veux vraiment comparer, ce n'est pas via PHP qu'il faut le faire... ou alors ajoute systématiquement un niveau d'inclusion.

    Après il y a de très nombreux facteurs qui peuvent entrer en jeu (version de PHP, cache disque, et surtout cache d'opcode).
    Je voulais mesurer directement l'influence sur une page. C'est ce qui m'interesse vu que je veux optimiser les pages de mon site.
    manganimes (en construction) -
    zemanga

  15. #215
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Et justement, comme tu ne peux pas mesurer le temps de compilation du script principal, tes résultats sont complètement faux.
    Google is watching you !

  16. #216
    Membre averti Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Points : 392
    Points
    392
    Par défaut
    ++i est legerement plus performant que i++ ;-)
    mais c'est du detail ;-)
    Le but de tout developpeur OO est de devenir une référence.
    Mon avatar est un ambigramme, les curieux peuvent le retourner ;-)
    Aider <> Faire a la place de!!!

  17. #217
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Citation Envoyé par XtofRoland
    ++i est legerement plus performant que i++ ;-)
    mais c'est du detail ;-)
    Ouaip, je confirme.

  18. #218
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 271
    Points
    271
    Par défaut
    Un truc tout bete d'optimisation, installer un cache du script compilé genre eaccelerator et les perfs seront grandement améliorée.

    Donc c'est bien d'optimiser a mort le code, faudrait aussi que ça soit le cas du coté du serveur

  19. #219
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Citation Envoyé par chaced
    Donc c'est bien d'optimiser a mort le code, faudrait aussi que ça soit le cas du coté du serveur
    yep, mais ça c'est bien souvent l'hebergeur qui le controle.

    Et puis sur un truc codé comme un goret, le cache d'OpCode ne changera pas grand chose : phpBB est lent qu'eAccelerator soit installé ou non.
    Google is watching you !

  20. #220
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Citation Envoyé par Kioob
    phpBB est lent qu'eAccelerator soit installé ou non.
    Troll spotted
    Sérieusement, heureusement que phpBB met en cache pas mal de trucs (ex. : nombre de posts par user), sans quoi ce serait encore plus lent (et pourtant, ce serait la "bonne" méthode à utiliser).
    Vivent les index ?

Discussions similaires

  1. [Débutant] Accélérer et optimiser ses scripts PHP
    Par Metallic-84s dans le forum Langage
    Réponses: 6
    Dernier message: 24/03/2006, 12h37
  2. [MySQL] [SGBD] Script PHP/MYSQL d'access FTP
    Par ChRom dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/01/2006, 01h52
  3. Réponses: 9
    Dernier message: 05/01/2006, 12h24
  4. Recherche Login Script PHP & MySQL
    Par whbh dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 01/12/2005, 16h45
  5. [MySQL] [Script]Optimisation de scripts Php/MySQL (2)
    Par copy dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/08/2004, 08h33

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