|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : avril 2005 Messages : 498 ![]() |
Bonjour,
Je commence un nouveau projet qui va être assez lourd. J'ai mis un timer qui me permet de savoir combien de temps il me faut pour effectuer des requetes, ou autres... J'ai mis un premier timer entre tous les includes que je fais de mes classes. Environ une 20ène. Il faut environ 1 sec pour inclure ces classes. Je trouve cela hyper long, pourtant aucun traitement n'est fait et les classes ne font pas plus de 200 à 500 lignes en général. Ca fait environ 0,05 ms par classes. Ca ne vous semble pas un peu long? |
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Inscription : avril 2005 Messages : 498 ![]() |
je précise la chose suivante.
Je charge une fois ma page, en faisant un include d'un fichier, qui comprends lui tous les includes de tous les autres fichiers. Ensuite toute ma navigation se fait en ajax. Il n'y a plus de rechargement de la page. Et dans le fichier appelé à chaque fois par ajax, j'ai mon include du fichier comprenant toutes les inclusions. Je ne pourrais pas les mettre en cache toutes ce sclasses? Seconde question: J'utilise le fameux ob_start("ob_gzhandler"); pour qu'il fasse les échos à la fin. Dois je remettre cet ob_start? dans le fichier appelé par ajax? |
|
|
00
|
|
|
#3 |
|
Membre éprouvé
![]() ![]() Inscription : août 2006 Messages : 313 ![]() |
Peut etre serait t'il interessant de passer par un cache en bytecode non ?
C'est evidant que si à chaque fois tu recharges l'ensemble de ton application, ça risque de prendre du temps. Apres, ça peut etre interessant dans ce genre de cas si tu connais parfaitement tes conventions de passer par un autoload ^^ |
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : avril 2005 Messages : 498 ![]() |
Je viens de mettre en place un autoload, mais je n'ai pasl'impression que ca change beaucoup.
D'autant plus qu'ayant des classes d'accès à mes données, et les classes étant pas mal liée entre elles, ca doit à mon avis en charger unebonne partie à chaque fois tout de meme. j'ai une navigation en ajax. Bizarement, si je ne met pas un include au départ, mon autoload ne semble pas fonctionner. a partir du moment ou j'ai fait un include sur le fichier index, et que je navigue en ajx, après ca semble ok. Bizarre... Aurais tu une doc pour le cache en bytecode? |
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : juin 2007 Messages : 89 ![]() |
Bonjour,
1s pour charger 20 classes cela me semble anormalement lent. Essaye de connaître le temps d'inclusion de chaque fichier, le problème provient peut être d'un seul fichier. |
|
|
00
|
|
|
#6 |
|
Membre actif
![]() ![]() Inscription : octobre 2006 Messages : 102 ![]() |
Chez moi, un fichier de 1500 lignes prend environ 18 ms pour s'inclure. Si tu as 20 fichiers de 500 lignes, soit 10000 lignes, ça devrait mettre environ 120 ms. Tes fichiers incluent n'en incluent-ils pas d'autres ?
Sinon je pense que tu as un problème de conception. Tes pages ne devraient pas recharger les 20 classes à chaque fois, mais seulement ce dont elles ont besoin... Te sers-tu *tout le temps* de tes 20 classes ? |
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : avril 2005 Messages : 498 ![]() |
avec un autoload, je passe à environ 0.2 sec.
Bizarrement, il faut que je fasse un include des classes, sur le index, qui ne sera pas rechargé par la suite puisque tout le reste se passe en ajax. J'ai un seul fichier ajax qui comprends toutes mes fonctions. Je lui passe dans un GET ou POST le nom de l'action et il prends la partie qui l'interesse. J'ai besoin d'une bonne partie de mes classes, j'en ai pour creer des formulaires, acceder à mes données et ensuite des classes qui correspondent à chaque ENTITE de ma base. Mais vu le projet, je risque d'en avoitr encore pas mal, et du coup, meme si je suis redescendu à 0.2, j'ai peur de revenir sur des temps anormalement long, alors que pour moi tout ce qui est coté PHP devrait être quasi instantané. Seules les requetes devraient etre longues. Je n'ai rien repéré d'anormales dans mes classes, et non elles prennent toutes à peu pret le meme temps EDIT: 0.05sec pour un include en moyenne |
|
|
00
|
|
|
#8 |
|
Membre régulier
![]() Inscription : juin 2007 Messages : 89 ![]() |
bonjour,
sinon tu peux essayer de profiler ton application. Pour cela il faut que tu installes l'extension xdebug qui va te générer un fichier de profile (fonctions appelles et temps d'exécution) que tu peux ensuite analyser avec KCacheGrind par exemple. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com