-
-
Notifications
You must be signed in to change notification settings - Fork 777
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PHP : Profilage performances #303
Comments
…lasses C'est parti de changements pour #255 et finalement j'ai continué la refactorisation... Ajout de préfixes FreshRSS_ et Minz_ sur le modèle de SimplePie_. Toutes les classes sont maintenant en chargement automatique (devrait améliorer les performances en évitant de charger plein de classes inutilisées, et faciliter la maintenance). Suppression de set_include_path(). Si souhaité, certaines classes de Minz pourraient être déplacées dans un sous-répertoire, par exemple les exceptions. Tests et relecture nécessaires.
Voir aussi #260 (PHP : Booléens plutôt que chaînes de texte) |
Implémente #260 (évite les comparaisons de chaînes au profit des vrais booléens et entiers) Grosse simplification et réduction du code relatif à la configuration. Supprime ConfigurationDAO. Permet de simplifier considérablement configureController. Évite de multiples copies des mêmes données en mémoire. Évite de garder plusieurs versions de la configuration en mémoire (auparavant : dans un tableau au niveau de ModelArray + au niveau de FreshRSS_Configuration + en Session + des copies temporaires comme ConfigurationDAO). Ne stocke plus 'conf' en Session (n'était presque pas utilisé). Évite de recharger plusieurs fois Translate inutilement. Contribue à #303
Minz ne prenait pas en charge OPcache (cache PHP) http://php.net/opcache activé par défaut depuis PHP5.5. Ce fut un peu dur d'isoler ce bug :-/ Il faut penser à appeler opcache_invalidate avant de ré-utiliser un fichier par include(). Aussi, le mécanisme de lock() n'est plus approprié ni nécessaire. Pour FreshRSS, évite l'utilisation de ModelArray car il ne restait que quelques lignes d'utiles, et évite un héritage + appel de classe, ce qui est toujours ça de gagné.
Un peu d'inspiration :-) |
@marienfressinaud : Le paramètre De plus, à part la compression (qui peut être faite ailleurs), En résumé, je pense qu'il serait possible d'améliorer les performances en supprimant |
#303 (comment) #163 * Remove Minz_Response (not needed anymore) * Move Minz_Request::reseted to Minz_Dispatcher::reset()
@marienfressinaud J'ai fait un patch expérimental, qui supprime une couche de ob_ et du code devenu inutile. Cela semble bien marcher. J'ai gardé |
@marienfressinaud |
Je ne suis pas contre la suppression des Le problème de bouger
|
Dans ce patch expérimental, je n'ai pas supprimé le système de reset, mais je l'ai refactorisé en Je n'ai pas bien compris la classification "layout" ou "helper", par exemple en comparant le contenu de Si ça ne peut pas être fusionné, autant laisser les fonctions telles qu'elles sont plutôt que d'ajouter une indirection supplémentaire. |
Ok donc c'est bon pour moi pour les modifs au niveau des Pour la classification ça peut effectivement ne pas être très clair :s Je considère que ce qui va dans |
Ah par contre, pourquoi avoir fait tes modifs directement dans la branche |
J'ai un peu hésité en effet, mais j'ai démarré ces patchs à la suite des discussions sur ob_ liées à l'export |
Pour être sûr d'être clair sur le ob_, la modification expérimentale améliore les performances, mais ne permet plus de faire un reset après avoir commencé à envoyer la sortie texte. Je n'ai néanmoins pas l'impression que cela soit utilisé, et ce n'est pas très propre dans tous les cas. |
Il n'y a pas de soucis, le reset est géré lors d'une redirection qui ne devrait être faite que dans le Controller. Et en principe aucun echo ne devrait être fait à ce niveau là |
Il reste un point à regarder à propos de la compression. Chez moi, c'est Apache (voir mod_deflate dans P.S.:
|
Je pense qu'on peut se contenter de la compression par Apache d'autant plus que je ne pense pas qu'on puisse s'en sortir pour les fichiers JS / svg / etc. autrement… Après on est dépendant d'Apache mais ce n'est pas non plus critique et je suppose que Nginx propose quelque chose de similaire. |
Ok. J'ai ajouté une constante pour facilement activer la compression par PHP si souhaité. |
As suggested #163 (comment) At the same time, removes a bunch of (almost) dead code such as Minz_Router (the few remaining lines being moved to Minz_FrontController to avoid a class) Contributes to #303
Any news here or ready to close it? |
Profiling our PHP code for the most common requests would still be nice to do (finding the most costly calls / lines) |
Après le profilage JavaScript, CSS, HTTP, et SQL qui ont été en bonne partie traités, il reste à faire le profilage du code PHP lui-même, par exemple avec xdebug http://xdebug.org/docs/profiler
The text was updated successfully, but these errors were encountered: