Улучшения производительности PHP 7 (2/5): целые числа и числа с плавающей запятой в PHP 7 бесплатны

4 минуты назад

Жюльен Паули, участник PHP и менеджер по выпускам, подробно рассказывает об изменениях между PHP 5 и PHP 7, а также о том, как выполнить миграцию и эффективно использовать языковые оптимизации. Все утверждения документированы конкретными примерами и профилями Blackfire. Второй эпизод: бесплатные целые/плавающие числа, экономящие до 50 % ресурсов ЦП.

Ниже представлен второй выпуск нашей серии блогов об улучшениях производительности PHP 7, подробно описанный Жюльеном Паули, участником PHP и менеджером по выпуску. Мы обновим это введение ссылками на все остальные статьи, когда они будут опубликованы.

Читать эпизод 1: Упакованные массивы

В PHP 7 способ размещения переменных в памяти резко изменился. Они перешли от хранения в куче к пулам памяти стека. В качестве побочного эффекта вы можете бесплатно повторно использовать контейнеры переменных: память не выделяется. Это невозможно сделать в PHP 5, где каждое создание/назначение переменной требует некоторого выделения памяти (что плохо сказывается на производительности).

Давайте посмотрим на этот фрагмент:

for ($i=0; $i

Этот код создает 10 000 переменных с именами от $0 до $10000 со строкой «foo» в качестве значения. Создание контейнера переменных в первый раз (как в нашем примере) явно потребляет часть памяти. Но что произойдет, если теперь мы повторно используем эти переменные для хранения целого числа?

Первоначально опубликовано на laravelfeed.com.