Оптимизация PHP - Сокращение использования памяти


Я запускаю Eclipse в Linux, и мне сказали, что я могу использовать Xdebug для оптимизации своей программы. Я использую комбинированный алгоритм в своем сценарии, который слишком долго выполняется.

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

Author: Emil Vikström, 2011-04-22

1 answers

Первый шаг - узнать, как рассчитать асимптотическое использование памяти, что означает, насколько увеличивается объем памяти, когда проблема становится больше. Это делается путем указания, что одна рекурсия занимает X байт (X = константа, проще всего установить ее равной 1). Затем вы записываете повторение, т.Е. Каким образом функция вызывает саму себя или циклы, и пытаетесь сделать вывод о том, насколько увеличивается объем памяти (является ли он квадратичным по отношению к размеру задачи, линейным или, может быть, меньше?)

Этому учат в начальной школе занятия по информатике в университетах, так как это действительно полезно при выводе о том, насколько эффективен алгоритм. Точный метод трудно описать в простом сообщении на форуме, поэтому я рекомендую вам взять книгу по алгоритмам (я рекомендую " Введение в алгоритмы" Кормена, Лейзерсона, Ривеста и Штайн- МИТ Пресс).

Но если вы понятия не имеете об этом типе работы, начните с использования get_memory_usage и повторения того, сколько памяти вы используете в своем цикле/рекурсии. Это может дать вам подсказку о том, в чем проблема. Постарайтесь уменьшить количество вещей, которые вы храните в памяти. Выбросьте все, что вам не нужно (например, не создавайте гигантский массив всех данных, если вы можете свести его к промежуточным значениям ранее).

 5
Author: Emil Vikström, 2011-04-22 19:21:31