Найти в Дзене

Unset не Unset в PHP

В этом посте мы поговорим об unset() в PHP и о фимозных личностях, которых можно встретить на собеседованиях. Поговорим о том, почему unset() в PHP по свой производительности аналогичен присваиванию переменной нового значения. Собеседования 2022 года, главным образом, запомнились мне прекрасными "техлидами" и "архитекторомаи" борющимися за микро-производительность в проектах построенных на фреймворках вроде Симфони... Дважды в собеседованиях мне встретилась просьба проанализировать код на проблемы, среди прочего в этом коде был unset() [удаляет переданную переменную]. Когда я никак не реагировал на него, начинался возглас - как вы могли его пропустить, это же гроб в производительности, в этот момент у меня начиналась рука-лицо. Да, unset($var) медленней $var=null (ради интереса, на моей домашней машине разница достигает 25%), но это не критично, так как за 1 секунду времени можно удалить 200 000 переменных или создать 200 000 тысяч новых переменных. Внезапно, да? Создание и удаление

В этом посте мы поговорим об unset() в PHP и о фимозных личностях, которых можно встретить на собеседованиях. Поговорим о том, почему unset() в PHP по свой производительности аналогичен присваиванию переменной нового значения.

Собеседования 2022 года, главным образом, запомнились мне прекрасными "техлидами" и "архитекторомаи" борющимися за микро-производительность в проектах построенных на фреймворках вроде Симфони...

Дважды в собеседованиях мне встретилась просьба проанализировать код на проблемы, среди прочего в этом коде был unset() [удаляет переданную переменную]. Когда я никак не реагировал на него, начинался возглас - как вы могли его пропустить, это же гроб в производительности, в этот момент у меня начиналась рука-лицо.

Да, unset($var) медленней $var=null (ради интереса, на моей домашней машине разница достигает 25%), но это не критично, так как за 1 секунду времени можно удалить 200 000 переменных или создать 200 000 тысяч новых переменных.

Внезапно, да? Создание и удаление переменной в PHP занимает примерно одинаковое время, и... разве хоть раз в голову кому-то приходил вопрос "не создавать переменную", так как это гроб в производительности???

Ну и немного внутрянки, для тех кому интересно почему unset() так быстр. А все очень просто, unset() просто удаляет переменную из "таблицы связей переменной и значений" (ну и понижает счетчик использования значения), а что делает создание переменной - добавляет данные в "таблицу связей переменных и значений" (и повышает счетчик использования значений).

Почему же некоторые считают что unset() гроб-кладбище-смерть? А очень просто, некоторые господа думают, что unset() вызывает очистку памяти (а это как раз медленный процесс), но вот нет - не вызывает, теперь живите с этим.