Оптимизация — Профилирование PHP 7 приложения с помощью blackfire.io, почему я вижу разное время процессора для одного и того же кода?

Я поддерживаю и переделываю устаревшее приложение PHP7. Это приложение не использует автозагрузку, вместо этого приложения требуют, чтобы все классы были в одном файле, просто обходя все каталоги с классами. Старая команда подумала, что это отличный способ оптимизации.

Итак, я провел несколько тестов с Blackfire и обнаружил, что это в том числе может занять половину времени процессора. Я провел эксперименты с автозагрузкой и уменьшил время процессора в два раза и потребление памяти в три раза. Отличный результат.

Затем я продолжил эксперименты со старым кодом без автозагрузки и обнаружил, что в некоторых случаях мега-включение не занимает много времени (и это плоский файл с большим количеством циклов, без операторов if-else).

На панели Blackfire это выглядит так, что у файла с включениями очень различное число вызываемых. В одном случае этот файл имеет 21 вызываемых и работает 132 мс, в другом случае его 6 вызываемых и 2,63 мс.

И я не понимаю причину такой разницы. Я предполагаю, что PHP7 очень умный и может анализировать, какие классы действительно должны быть скомпилированы в байт-код, а какие нет.

Кто-нибудь знает, почему существует такая разница?

PS: я не могу показывать отчеты о пожаре, PM не позволяет этого.

0

Решение

Без кода или отчетов угадать сложно. Но я бы посмотрел на эту страницу. Может быть, вещи, которые объясняются там, присутствуют в коде, который вы просматриваете.

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

0

Другие решения

Других решений пока нет …