Производительность PHP: $ this-> переменная и локальная переменная $ (манипуляция)

У меня был раздел в классе, который я решил разбить на новый.

Когда я портировал раздел кода в новый класс, я заметил, что он был значительно медленнее при выполнении одного из циклов foreach.

Мне удалось отследить часть проблемы, чтобы решить, как я решил сохранить окончательный массив результатов.

Я думаю, будет легче понять, если вы увидите сокращенную версию моего кода:

Исходный портированный код: http://pastebin.com/2iBuqmgn Более оптимизированный портированный код: http://pastebin.com/TYU1rHwU

Вы увидите, что в первом примере я манипулирую $ this-> active_topics непосредственно во всех проходах.

Хотя во втором примере я использую локальные переменные, прежде чем сохранить локальную переменную в $ this-> active_topics ПОСЛЕ цикла foreach.

С исходным циклом, казалось, было среднее значение до 1 секунды, в то время как более оптимизированный один использовал 0,85 для выполнения в среднем. Они в конечном итоге возвращают точно такой же контент.

Почему более оптимизированный код с использованием локальных переменных более эффективен?

Когда вы получаете доступ к чему-то в классе, PHP-интерпретатор сначала должен найти класс в памяти, а затем посмотреть, где находится атрибут. В простой локальной переменной ему не нужно искать атрибут внутри класса, он может просто получить доступ к памяти переменной напрямую и, следовательно, немного быстрее.