|
|||||||
| Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Invité régulier
![]() Date d'inscription: mars 2005
Messages: 19
|
Bonjour tout le monde, peu de personnes en parle mais il est intéressant de discuter des performances du Zend Framework.
Dans la société pour laquelle je travaille nous avons fait des tests ultra basiques. Et nous sommes arrivés à la conclusion suivante: le Zend Framework n'avance pas, rame la mort même, ... Nous avons peut-être rater quelque chose, un petit guide sur l'optimisation serait quand meme le bienvenue. Ci-dessous le code du test le boot strap, on remarque qu'il n'y a même pas de rendu avec le ViewRenderer mais qu'il y a l'autoload Code :
error_reporting (E_ALL) ; ini_set ('display_errors','yes'); set_include_path('.'. PATH_SEPARATOR . '../library'. PATH_SEPARATOR . '../application/models/'. PATH_SEPARATOR . get_include_path()); include_once('Zend/Loader.php'); Zend_Loader::registerAutoload(); $frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions(true); $frontController->setControllerDirectory('../application/controllers'); $frontController->setParam('noViewRenderer', true); $frontController->dispatch(); Code :
class IndexController extends Zend_Controller_Action { public function afficherAction() { echo 'prout'; } } hop un petit apache dessus: ab -n 100 -c 10 -k http://adresse_qui_va_bien on obtient un résultat de environ 3.5 req/s. Un seul echo dans un script php, on obtient des performance 100 fois supérieure. Autant dire que pour notre projet utilisé un "truc" avec de telle performance c'est comme se tirer une balle dans le pied voir dans la tête. Est-ce que les avantages du framework nous font gagner des performances au fur et à mesure de son utilisation ? Enfin pouvez-vous m'aiguiller, me donner des éléments de réponses ... |
|
|
|
|
|
#2 (permalink) |
|
Membre éclairé
![]() Date d'inscription: septembre 2007
Messages: 314
|
A quoi ça sert et comment ça marche :
Code :
hop un petit apache dessus: ab -n 100 -c 10 -k http://adresse_qui_va_bien on obtient un résultat de environ 3.5 req/s. Bonjour, Pour avoir une idée concrète et ne pas partir dans des débats du genre "oui mais..." je te conseil de regarder un cas concret d'une application utilisant ZF qui tourne. Il s'agit d'une boutique eCommerce open source et tu pourras avoir une démo à cette adresse : magento Ce site a quand même été réalisé par des pros du ZF (les créateurs je crois) donc c'est parfait. En ce qui me concerne, ZF rame un peu, mais mon code est souple et très simple à maintenir. Pourtant je fais des choses complexes (qui sont gérés par ZF) comme une gestion d'acl, etc... Mon site rame beaucoup plus que le site de magento, mais je ne suis pas encore expert dans le web, php et zf, un jour peut-être Encore une fois, tout dépend ce que vous devez développer. |
|
|
|
|
|
#3 (permalink) |
|
Membre émérite
![]() Date d'inscription: janvier 2007
Localisation: paris
Âge: 24
Messages: 766
|
Salut,
La question m'interesse aussi n'étant pas utilisteur de zf. Mais peux tu préciser un peu ta configuration : Version de php Version d'apache (Sa peut jouer ?) Systeme de cache (APC, eaccel..) ? Type de disque/serveur ? Version de ZF ? Bref préciser un peu ton environnement pour pouvoir par la suite comparer si le nombre de réponses est suffisant. Merci, a+ |
|
|
|
|
|
#4 (permalink) | |
|
Membre émérite
![]() Date d'inscription: janvier 2007
Localisation: paris
Âge: 24
Messages: 766
|
Citation:
http://httpd.apache.org/docs/2.0/programs/ab.html La -c 10 pour réaliser 10 requete simultanées et -n 100 pour le nombre de requetes total, -k pour activer le keepalive (là je ne sais pas topr l'impact que cela à). bye |
|
|
|
|
|
|
#5 (permalink) |
|
Membre actif
![]() Date d'inscription: mai 2008
Messages: 182
|
Bonjour \o/
J'utilise ZF régulièrement tous les jours depuis bientôt 1 mois, et franchement, je ne suis pas déçu des performances .. des pages qui se generent en moins d'une demi seconde sur un PC pas super puissant ( avec eclipse + firefox, donc la ram, autant dire qu'elle a disparue depuis longtemps ), et pour des operations parfois complexes Sinon, c'est un peu normal qu'il y'ai une 'legère' difference entre ZF et un script tout simple .. tu as pas idée du nombre de trucs qu'y charge rien que pour ton petit echo la .. Puis, franchement .. utiliser ZF pour faire un echo, c'est prendre un lance missile nucléaire dernière génération ( que les americains savent même pas avoir inventés en secret ), le tout pour enfoncer une porte ouverte. Par contre, va t'amuser à faire des traitements, devoir débugger ton code .. ca, au moins, c'est optimisé niveau codage / debug, et je trouve que ca vaut bien un peu de chargement en plus Donc bah voila, ZF, c'est p'tet un peu pas rapide, mais ca le vaut bien ! \o/ Sinon, t'a une solution : demander à quelqu'un que tu aimes pas de coder l'appli, comme ca, il se tire une balle dans le pied ou la tête, et t'est tranquille ...
|
|
|
|
|
|
#6 (permalink) | |
|
Membre éclairé
![]() Date d'inscription: septembre 2007
Messages: 314
|
Citation:
La question serait de savoir quelle type d'application vous devez développer, en combien de temps, et combien de personnes vont travailler dessus. Une contrainte d'utiliser ZF serait alors son temps d'apprentissage (comme pour n'importe quelle autre framework). |
|
|
|
|
|
|
#7 (permalink) | |
|
Invité régulier
![]() Date d'inscription: mars 2005
Messages: 19
|
Config de test
Machine: P4 3 ghz avec 2 Go de Ram sous Red Hat 5 Apache: 2.2.6 PHP: 5.2.5 L'accès disque est un samba connecté en 1 gigabit. Les disques physique sont une grappe raid 5 de 6 disques (qui envoit du 250 Mo/s) A propos du cache Nous avons réalisé des tests avec APC, nous arrivons à 20 req/s pour un echo sans chargement de ViewRenderer et 10 req/s lorsque nous affichons notre rendu grâce à celui-ci. L'utilisation de Zend est pour refondre un site qui a parfois 3 000 accés in the same time. Donc c'est pas rien. Citation:
Que se passe-t-il quand on utilise beaucoup plus de fonctionnalités ? Merci de vos réponses. |
|
|
|
|
|
|
#8 (permalink) |
|
Membre à l'essai
![]() |
Bonjour,
Effectivement je pense aussi que le gros inconvénient du ZF c'est sa lenteur... Dans ma boite, une équipe qui utilise le ZF depuis assez longtemps avait trouvé une méthode en regroupant le code du Zend Loader sur un fichier... (Galère donc.) Ce qui permettait des gains de l'ordre de 40% (C'était encore sur la 1.0). Je n'ai pas plus de détail que ça, c'était une discussion de machine à café avec ladite équipe mais je suppose qu'il y a des sources sur le web si t'es motivé ![]() Maintenant, pour des projets ne nécessitant pas une rapidité particulière, le gain en clarté au niveau du code, la simplicité de la mise en place du ZF et du MVC justifient son utilisation. D'ailleurs pour le moment je n'ai pas du tout envie de m'en passer! De plus, tout de même, par rapport à ton test, le changement de ton "echo" par un traitement plus complexe ne devrait pas rallonger énormément le temps d'exécution du script, le plus gros du travail étant déjà effectué avant le "echo". |
|
|
|
|
|
#9 (permalink) |
![]() Date d'inscription: mai 2004
Localisation: Townsville
Âge: 39
Messages: 4 216
|
Bonjour,
une petite remarque : Zend_Loader et a fortiori l'autoload, ne sont utiles que quand le chemin d'accès aux scripts contenant les classes est défini dynamiquement, à l'exécution. Si ce n'est pas le cas, un require_once() suffit amplement et sera bien plus performant. C'est d'ailleurs mentionné dans la doc. Des performances ? Non. Du temps de développement et de maintenance ? Oui. C'est intrinsèque aux frameworks de développement, quels que soient la plateforme et le langage utilisé : on gagne en qualité (et donc en fiabilité) et en temps de développement, au sacrifice d'un peu de performances.
__________________
FAQ XML ------------ « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser » Giacomo Leopardi |
|
|
|
|
|
#10 (permalink) |
![]() Date d'inscription: mai 2002
Localisation: Nancy
Âge: 32
Messages: 1 015
|
Et quelles sont les performances sans les deux premières lignes qui sont extrêmement coûteuses en terme de performance ?
PS : Vos tests doivent être erronés, je pense au vu des résultats sur ma machine personnel (un vieux portable). Vous êtes sûr de vous ?
__________________
Alexandre T. PHP5/MySQL5 Codes prêts à l'emploi 30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc... Mes articles |
|
|
|
|
|
#11 (permalink) | ||
![]() Date d'inscription: février 2004
Localisation: Yonne
Messages: 13 734
|
Citation:
![]() Pour répondre dans le sujet, je me permets de rappeler qu'il y a plusieurs écoles pour le chargement de classes :
Pour rappel (bis), il existe une méthode alternative pour un serveur en prod : http://blog.developpez.com/julienpau...les_perfromanc Citation:
As-tu déjà essayé Zend Platform ?
__________________
Mes articles - Mon blog - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
||
|
|
|
|
|
#13 (permalink) |
![]() |
Voici des benchs récents Zend_Loader <-> include_once :
http://random-bits-of.info/fw-tests/ Les résultats obtenus sont Without bytecode cache: require_once Zend_Loader php5.2 4.42 4.42 php5.3 4.96 4.97 With bytecode cache: require_once Zend_Loader php5.2 63.04 56.62 php5.3 61.28 55.52 http://www.nabble.com/Zend-Loader-pe...html#a17266925 Tes résultats sont bizarres, un cache Opcode bien configuré devrait largement compenser le chargement (sans même avoir à mettre les doigts dans le code en C, c'est pas beau ça ?) Le temps que prend le ZF à charger provient du fait que chaque classe est dans un fichier différent. Si toutes les classes étaient dans un seul énorme fichier, ça serait beaucoup plus court. Idem : si l'autoload était activé dans la source de ZF, le chargement serait plus rapide (c'est toujours en débat, mais probablement prévu pour ZF2.0).
__________________
- Formateur chez Anaska, PHP & ZendFramework - Mon blog - Mes tutos - contributeur ZendFramework - - PHP5 powers the web |
|
|
|
|
|
#14 (permalink) | |
|
Invité de passage
![]() Date d'inscription: novembre 2006
Messages: 2
|
Citation:
Si vous pouvez faire mieux et plus rapide sans, faite le et c'est preferable. |
|
|
|
|
|
|
#15 (permalink) | |
![]() Date d'inscription: février 2004
Localisation: Yonne
Messages: 13 734
|
Citation:
Comparer deux frameworks n'est pas une chose aisée, et un simple "hello world" ne me semble pas du tout représentatif. Merci de donner des avis construits, pas une simple commande "ab"... Pour tester un framework, il faut simuler une session complète de navigation d'un utilisateur et donc utiliser un framework de test bien plus complexe qu'Apache Bench seul. Regardez plutôt du côté de Selenium par exemple.
__________________
Mes articles - Mon blog - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
|
|
|
![]() |
![]() |
||
Performances du framework
|
||
| Outils de la discussion | |
|
|