Потребление памяти при передаче объектов в качестве аргументов в PHP

#php #oop

#php #ооп

Вопрос:

Мой вопрос в том, что потребляет больше памяти:

  1. Передать объект в качестве аргумента в методе
  2. Передайте целое число ID в качестве аргумента, а затем создайте объект из этого идентификатора

Заранее большое вам спасибо.

Комментарии:

1. Является ли конечный результат одним и тем же объектом? Откуда ID берется?

2. Если ваши объекты не имеют дело со многими мегабайтами данных, я бы назвал это преждевременной оптимизацией

3. php.net/manual/en/language.oop5.references.php

4. Объект является экземпляром одного элемента строки в базе данных. У нас есть наш внутренний ORM.

Ответ №1:

Поскольку объекты в PHP всегда передаются по ссылке, и их создание из идентификатора может создать дубликат объекта, если он существует вне функции, я бы сказал, что метод 1 более эффективен с точки зрения памяти.

Ответ №2:

2 будет потреблять больше реальной памяти, потому что в дополнение к самому объекту вам нужно обращаться к базе данных (если вы не используете интеллектуальный ORM, такой как Doctrine 2, который сохраняет ссылку на уже извлеченные объекты, чтобы сохранить обращения к БД)

1 не будет потреблять никакой памяти вообще, кроме уже используемой объектом, потому что вы отправляете только ссылку на него (в PHP объекты передаются по ссылке по умолчанию)

Я бы выбрал 1 в любой день