12 astuces d'optimisation de performance PHP
Par NiKo le mercredi 22 novembre 2006, 22:25 - Dev - Lien permanent
Je suis tombé complètement par hasard (enfin, par celui des apports de Blogdigger) sur un article présentant 12 astuces pour optimiser les performances de son code PHP suite à une présentation sur le sujet d'Ilia Alshanetsky à la Zend Conference (les slides sont disponibles).
C'est tellement pertinent que je les reprends telles quelles ici, en français :
- Si vous pouvez déclarer une méthode statique
static, faites-le : les performances sont multipliées par 4. - Éviter les méthodes automagiques comme
__get,__setou__autoload. require_onceet son copaininclude_oncesont très coûteux.- Utilisez des chemins absolus dans les appels à
requireouincludequand vous le pouvez : PHP perdra moins de temps à résoudre les chemins système. - Utilisez
$_SERVER['REQUEST_TIME']plutôt quetime()pour obtenir le temps système. - Voyez si vous ne pouvez pas utiliser
strncasecmp,strpbrkandstriposplutôt que de recourir aux expressions régulières. preg_replaceest plus rapide questr_replacestr_replaceest bien entendu beaucoup plus rapide quepreg_replace[1], maisstrtrest 4 fois plus rapide quepreg_replace!- L'emploi de tableaux en tant qu'arguments des fonctions de remplacements de chaînes de caractères est plus couteux que l'utilisation multiple de cette même fonction chaîne par chaîne à remplacer.
- La suppression de la sortie d'erreur par l'emploi du caractère @ est très coûteuse.
$row['id']est 7 fois plus rapide d'accès que$row[id].- Les messages d'erreur en général sont coûteux.
- N'utilisez pas de fonctions à l'intérieur des boucles comme
for ($x=0; $x < count($array); $x++): ici la méthodecount()est appelée à chaque itération.
Notes
[1] Le billet lié est erroné sur ce point, et je l'avais traduit tel quel. La lecture des slides de la conférence m'aura permis de réctifier le tir.



















Commentaires
1. Le mercredi 22 novembre 2006, 23:48 par cam
2. Le mercredi 22 novembre 2006, 23:53 par jblanche
3. Le jeudi 23 novembre 2006, 01:41 par Bast
4. Le jeudi 23 novembre 2006, 01:52 par azurams
5. Le jeudi 23 novembre 2006, 08:04 par NiKo
6. Le jeudi 23 novembre 2006, 08:16 par Geoffrey
7. Le jeudi 23 novembre 2006, 08:46 par arnod'mental
8. Le jeudi 23 novembre 2006, 08:57 par David Duret
9. Le jeudi 23 novembre 2006, 09:35 par Greg
10. Le jeudi 23 novembre 2006, 09:57 par Thanh
11. Le jeudi 23 novembre 2006, 10:17 par BeMe
12. Le jeudi 23 novembre 2006, 10:19 par hugo
13. Le jeudi 23 novembre 2006, 10:22 par Clochix
14. Le jeudi 23 novembre 2006, 10:34 par NiKo
15. Le jeudi 23 novembre 2006, 10:38 par giz404
16. Le jeudi 23 novembre 2006, 11:21 par Olivier
17. Le jeudi 23 novembre 2006, 13:20 par Geoffrey
18. Le jeudi 23 novembre 2006, 13:24 par NiKo
19. Le jeudi 23 novembre 2006, 13:27 par chris
20. Le jeudi 23 novembre 2006, 13:35 par Geoffrey
21. Le jeudi 23 novembre 2006, 13:41 par NiKo
22. Le jeudi 23 novembre 2006, 13:42 par Geoffrey
23. Le jeudi 23 novembre 2006, 13:44 par NiKo
24. Le jeudi 23 novembre 2006, 13:47 par Geoffrey
25. Le jeudi 23 novembre 2006, 13:49 par NiKo
26. Le jeudi 23 novembre 2006, 16:02 par Romain
27. Le jeudi 23 novembre 2006, 18:52 par panjhy
28. Le jeudi 23 novembre 2006, 18:53 par Thibs
29. Le jeudi 23 novembre 2006, 19:20 par NiKo
30. Le vendredi 24 novembre 2006, 10:34 par Arnaud
31. Le vendredi 24 novembre 2006, 12:05 par Cyruss
32. Le vendredi 24 novembre 2006, 21:23 par netking
33. Le samedi 25 novembre 2006, 01:15 par balluche
34. Le samedi 25 novembre 2006, 15:59 par Christophe
35. Le lundi 4 décembre 2006, 19:13 par raphpell
36. Le mercredi 6 décembre 2006, 14:20 par biou
37. Le mercredi 20 décembre 2006, 14:11 par FlorentG
38. Le mercredi 20 décembre 2006, 14:22 par FlorentG