У меня был раздел в классе, который я решил разбить на новый.
Когда я портировал раздел кода в новый класс, я заметил, что он был значительно медленнее при выполнении одного из циклов foreach.
Мне удалось отследить часть проблемы, чтобы решить, как я решил сохранить окончательный массив результатов.
Я думаю, что это будет легче понять, если вы видите сокращенную версию моего кода:
Оригинальный портирован код: http://pastebin.com/2iBuqmgn Более оптимизированный портирован код: http://pastebin.com/TYU1rHwU
Вы увидите, что в в первом примере я манипулирую $ this-> active_topics прямо во всех проходах.
В то время как во втором примере я использую локальные переменные, прежде чем сохранять локальную переменную в $ this-> active_topics ПОСЛЕ цикла foreach.
С первоначальной петлей, казалось, было среднее значение до 1 секунды, в то время как более оптимизированная версия 0.85 выполнялась в среднем. Они в конечном итоге возвращают точно такой же контент.
Почему более оптимизированный код с использованием локальных переменных более эффективен?