2016-08-17 1 views
0

Je supporte et retravaille l'ancienne application PHP7. Cette application n'utilise pas le chargement automatique, au lieu de cette application, toutes les classes doivent être dans un seul fichier, en contournant tous les répertoires avec des classes. L'ancienne équipe a pensé que c'était un excellent moyen d'optimisation.Profiling application PHP 7 avec blackfire.io, pourquoi je vois le temps de CPU différent pour le même code?

J'ai donc fait quelques tests avec blackfire, et j'ai trouvé que cela pouvait consommer la moitié du temps de CPU. J'ai fait des expériences avec autoload et réduire le temps de cpu en deux temps et la consommation de mémoire en trois fois. Excellent résultat Puis j'ai continué les expériences avec l'ancien code sans chargement automatique et j'ai trouvé que dans certains cas, méga-inclus ne consommait pas beaucoup de temps (et c'est un fichier plat avec beaucoup de boucles, pas d'instructions if-else). Dans le panneau blackfire, cela ressemble à ce fichier avec inclus ont un nombre très distingué de calle. Dans un cas ce fichier a 21 callees et travaille 132 ms, dans un autre cas ses 6 callees et 2.63 ms.

Et je ne comprends pas la raison d'une telle différence. Mon hypothèse est que PHP7 est très intelligent et peut analyser quelles classes devraient vraiment être compilées en octets et non.

Est-ce que quelqu'un sait pourquoi une telle différence existe? PS: Je ne peux pas afficher les rapports Blackfire, PM ne le permet pas.

Répondre

0

Sans le code ou les rapports est difficile à deviner. Mais je voudrais jeter un coup d'oeil à cette page. Peut-être que les choses qui y sont expliquées sont présentes dans le code que vous examinez.

https://blackfire.io/docs/24-days/22-php-internals