Задать вопрос
@kot-samolet

Выделение памяти в PHP ООП?

Известную статью на хабре "управление памятью в php и всё же оно есть" читал, вопросы немного другие:

1) При создании экземпляра new Class() в память забираются все его методы - чем больше методов тем больше памяти надо, или там память на метод в момент его вызова метода выделяется?

2) Тот же вопрос по наследованию, все родители и их методы подгружаются сразу автоматически?

Значит ли всё это что наиболее нагруженную но простую часть системы лучше вынести в отдельный компактный класс содержащий только необходимое для её функционирования?
  • Вопрос задан
  • 450 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
@D3lphi
1) При создании экземпляра new Class() в память забираются все его методы - чем больше методов тем больше памяти надо, или там память на метод в момент его вызова метода выделяется?


При подключении ЛЮБОГО php файла производится лексический анализ, лексер генерирует из исходного кода программы набор токенов, из которых строится синтаксические дерево. Отсюда следует то что, чем больше кода, тем больше памяти выделяется.

Само по себе создание каждого последующего объекта также несет затраты.

Значит ли всё это что наиболее нагруженную но простую часть системы лучше вынести в отдельный компактный класс содержащий только необходимое для её функционирования?


Вы экономите на спичках. Хорошая архитектура важнее сэкономленной микросекунды и килобайта памяти.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Никого не слушайте!
Динамическая загрузка дочерних классов и методов, а также их повторное использование (клонирование и реинициализацию вместо new ClassName() ) - экономит как время исполнения, так и память.
Скорость работы - увеличивается так, что становится заметна невооружённым глазом.
По "зёрнышку" на каждом этапе - можно выиграть ускорение до 4x-5x от прежней скорости.
Главное - начинайте с архитектуры!
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@shagguboy
не значит. сэкономленные 2 микросекунды тебе ничего не решат
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы