Je suis micro-optimisant cette fonction et ai un peu de problème où à l'intérieur d'une boucle je vérifie si une valeur en dehors de la boucle est 0, si ainsi appeler la fonction et de même dans la fonction qu'elle appelle . Comment pourrais-je le refactoriser afin qu'il n'y ait pas de logique conditionnelle (qui est lente) à l'intérieur de ces boucles.PHP Optimiser la fonction dans la boucle
foreach($this->layer[$l]->objs as $obj)
{
//Horrific code to save 20ms :(
($l===0) ? $obj->myfunc_clean($var,$var2) : $obj->myfunc($var,$var2);
}
J'ai besoin de se débarrasser de la condition $l===0
parce que cette condition dans une boucle de milliers d'objets le ralentit considérablement. De plus, j'ai une fonction qui doit être traitée normalement mais l'autre doit désactiver les variables temporaires quand elle se termine (en supposant que l soit 0). La fonction myfunc
a également une boucle sur encore plus d'objets, d'où la nécessité d'appeler des fonctions séparées pour économiser encore plus de logique conditionnelle. Cela peut ressembler à une optimisation prématurée mais croyez-moi, pour mon application, économiser 1 milliseconde peut sauver de précieuses secondes (probablement environ 10 000 itérations sinon plus). Donc, s'il vous plaît pas de réponses sur l'optimisation prématurée est la racine de tous les maux et autres joyeusetés. Ce n'est certainement pas prématuré. Vous ne pouvez pas simplement mettre le test en dehors de la boucle?
Bien que je trouve inutile d'optimiser cela, http://www.phpbench.com pourrait vous donner quelques autres idées. – Gordon