Я поддерживаю и переделываю устаревшее приложение PHP7. Это приложение не использует автозагрузку, вместо этого приложения требуют, чтобы все классы были в одном файле, просто обходя все каталоги с классами. Старая команда подумала, что это отличный способ оптимизации.
Итак, я провел несколько тестов с Blackfire и обнаружил, что это в том числе может занять половину времени процессора. Я провел эксперименты с автозагрузкой и уменьшил время процессора в два раза и потребление памяти в три раза. Отличный результат.
Затем я продолжил эксперименты со старым кодом без автозагрузки и обнаружил, что в некоторых случаях мега-включение не занимает много времени (и это плоский файл с большим количеством циклов, без операторов if-else).
На панели Blackfire это выглядит так, что у файла с включениями очень различное число вызываемых. В одном случае этот файл имеет 21 вызываемых и работает 132 мс, в другом случае его 6 вызываемых и 2,63 мс.
И я не понимаю причину такой разницы. Я предполагаю, что PHP7 очень умный и может анализировать, какие классы действительно должны быть скомпилированы в байт-код, а какие нет.
Кто-нибудь знает, почему существует такая разница?
PS: я не могу показывать отчеты о пожаре, PM не позволяет этого.
Без кода или отчетов угадать сложно. Но я бы посмотрел на эту страницу. Может быть, вещи, которые объясняются там, присутствуют в коде, который вы просматриваете.
Других решений пока нет …