Оптимизация PHP - Сокращение использования памяти
Я запускаю Eclipse в Linux, и мне сказали, что я могу использовать Xdebug для оптимизации своей программы. Я использую комбинированный алгоритм в своем сценарии, который слишком долго выполняется.
Я просто прошу указать отправную точку для отладки этого. Я знаю, как делать основы...точки останова, условные точки останова, старт, остановка, переход и т.д... но я хочу изучить более продвинутые методы, чтобы я мог писать лучший, оптимизированный код.
1 answers
Первый шаг - узнать, как рассчитать асимптотическое использование памяти, что означает, насколько увеличивается объем памяти, когда проблема становится больше. Это делается путем указания, что одна рекурсия занимает X байт (X = константа, проще всего установить ее равной 1). Затем вы записываете повторение, т.Е. Каким образом функция вызывает саму себя или циклы, и пытаетесь сделать вывод о том, насколько увеличивается объем памяти (является ли он квадратичным по отношению к размеру задачи, линейным или, может быть, меньше?)
Этому учат в начальной школе занятия по информатике в университетах, так как это действительно полезно при выводе о том, насколько эффективен алгоритм. Точный метод трудно описать в простом сообщении на форуме, поэтому я рекомендую вам взять книгу по алгоритмам (я рекомендую " Введение в алгоритмы" Кормена, Лейзерсона, Ривеста и Штайн- МИТ Пресс).
Но если вы понятия не имеете об этом типе работы, начните с использования get_memory_usage и повторения того, сколько памяти вы используете в своем цикле/рекурсии. Это может дать вам подсказку о том, в чем проблема. Постарайтесь уменьшить количество вещей, которые вы храните в памяти. Выбросьте все, что вам не нужно (например, не создавайте гигантский массив всех данных, если вы можете свести его к промежуточным значениям ранее).