Производительность

С каждой новой версией PHP разработчики делали немало для повышения производительности. В свое время, большой прирост скорости владельцы сайтов получили при переходе с PHP 5.6 на PHP 7.0, что повысило производительность сайта в 2-3 раза. Поэтому, если вы еще не перешли на PHP 7.x, то самое время это сделать сейчас.

Также заметный рост производительности случился и с обновлением PHP 7.0 до версии 7.1. Положительная тенденция не стала исключением и для PHP 7.2. Прежде всего, оптимизации подвергся встроенный механизм кэширование - Opcache, который является самым эффективным и интегрирован начиная с версии PHP 5.5.

В Opcache была добавлена глобальная оптимизация на основе анализа потока данных с использованием SSA (Static single assignment form): Sparse Conditional Constant Propagation (SCCP), удаление мертвого кода (Dead Code Elimination — DCE) и удаление неиспользуемых локальных переменных, что в теории должно улучшить производительность web-приложений.

Сравнение производительности PHP 5.6, PHP 7.0, PHP 7.1 и PHP 7.2

В связи с тем, что подавляющая часть сайтов не поддерживает PHP 7.2 тестирование проводилось с помощью бенчмарка bench.php.

Тестовая платформа: VPS с одним виртуальным ядром, 2,4 ГГц, 2 Гб памяти и SSD drives. На всех версиях PHP включен Opcache.

Что нового в PHP 7.2. Сравнение скорости PHP 5.6, 7.0, 7.1, 7.2

По результатам тестирования заметен высокий прирост производительности в PHP 7.2, даже по сравнению с PHP 7.1. И девятикратное превосходство с PHP 5.6. Осталось только дождаться поддержки новой версии PHP со стороны разработчиков CMS, чтобы повторить тесты на реальных web-приложениях.

Основные нововведения

PHP 7.2 включает в себя некоторые улучшения, а также новые возможности:

  • Изменения в преобразовании массивов/объектов, числовые ключи
  • Изменения в подсчете несчитаемых типов
  • Объявление объектного типа
  • HashContext в виде объекта
  • Добавлен алгоритм Argon2 в функции хэширования паролей
  • Улучшения SSL / TLS Констант
  • Удалено расширение Mcrypt
  • Добавлено расширение sodium

Устаревшие функции PHP 7.2

Список функций, которые будут считаться устаревшими в PHP 7.2. Данные функции будут удалены не позднее PHP 8.0:

  • __autoload
  • $php_errormsg
  • create_function()
  • mbstring.func_overload
  • (unset) cast
  • parse_str() без второго аргумента
  • gmp_random()
  • each()
  • assert() со строковым аргументом
  • $errcontext аргумент обработчика ошибок

Выводы

PHP 7.2 содержит ряд эволюционных изменений, которые положительно скажутся web-приложениях. Заметный прирост скорости в синтетических тестах позволяет надеяться, что удастся улучшить производительность на реальных сайтах. Ждем поддержки PHP 7.2 в будущих обновлениях CMS.

В ближайшее время мы планируем внедрение новой версии PHP 7.2 на всех тарифных планах нашего хостинга.

Более подробно обо всех нововведениях PHP 7.2 читайте на wiki.php.net