The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Разработчики PHP представили интерпретатор нового поколения ..."
Отправлено opennews, 08-Май-14 10:29 
В списке рассылки разработчиков PHP объявлено (http://news.php.net/php.internals/73888) о начале тестирования проекта phpng (https://wiki.php.net/phpng), в рамках которого ведётся работа над следующим поколением интерпретатора для языка программирования PHP, отличающегося переходом на новый вариант движка Zend Engine, в котором будут воплощены новые идеи по организации работы с памятью и применения технологий JIT-компиляции. Итогом разработки станет выпуск PHP 5.7, примечательный существенным увеличением производительности выполнения скриптов. В настоящее время начальная версия phpng уже доступна (https://wiki.php.net/phpng) для сборки и тестирования.


Сообщается, что с момента выпуска PHP 5.0 наблюдается значительный прогресс в области увеличения производительности PHP - скорость выполнения синтетических тестов увеличилась в 6 раз, а ускорение выполнения реальных приложений оценивается в два раза. При разработке новой ветки большое внимание уделяется экспериментам с технологиями JIT-компиляции. В частности, на базе LLVM  подготовлен прототип встроенного в OPCache JIT-компилятора, что позволило по сравнению с PHP 5.5 увеличить скорость выполнения тестового набора в 10 раз, но в реальных приложениях ускорение составило всего несколько процентов.


Различия в показателях тестов и реальных приложений заставили задуматься разработчиков и провести более глубокую ревизию возможных узких мест, устранение которых позволило бы добиться более ощутимого прогресса в оптимизации. Сама по себе виртуальная машина уже достаточно хорошо оптимизирована, но проблема оказалась в методах работы с памятью и организации хранения структур данных. В текущем виде при работа со структурами данных приводит к большому числу операций выделения и перераспределения памяти, а также подсчёта ссылок на структуры для работы сборщика мусора. В итоге типичное PHP-приложение тратит примерно 20% времени на выполнение задач менеджера памяти, 10% на обработку хэш-таблиц, 30% на вызов внутренних функций и только 30% на выполнение кода в виртуальной машине.


При подготовке PHPNG основное внимание уделено изменению методов работы с памятью и переход на новые структуры (https://wiki.php.net/phpng-int) хранения данных, которые минимизируют число операций в куче. Идея переработки структур была связана с определённым риском, связанным с появлением непредсказуемых результатов глобального рефакторинга. Сейчас уже доступны первые результаты проделанной работы, которые показали, что разработчиками был выбран правильный путь, который привёл к существенному повышению производительности, снижению потребления памяти и стал хорошей предпосылкой к внедрению новых JIT-технологий для дальнейшего ускорения работы PHP.


В среднем изменения позволили добиться увеличения производительности реальных приложений на 10-30%:

-  Wordpress 3.6 – 20.0% (было 211, стало 253 запросов в секунду)
-  Drupal 6.1 – 11.7% (1585/1770 запросов в секунду)
-  Qdig – 15.3%  (482/555 запросов в секунду)
-  ZF test app – 30.5% (166/217 запросов в секунду)


Из идей по проведению дальнейших оптимизаций отмечается:


-  Оптимизация вызова и возврата из функций;

-  Замена Zend Memory Manager на xx_malloc, что позволит увеличить производительность приблизительно на 2%;
-  Переработка очень медленного API zend_parse_parameters();
-  Сокращение объёма данных, копируемого из областей разделяемой памяти OPCache в память процесса;
-  Переход на libpcre с поддержкой JIT-компиляции регулярных выражений;
-  Замена  ext/json на pecl/jsond.


URL: http://news.php.net/php.internals/73888
Новость: https://www.opennet.ru/opennews/art.shtml?num=39724

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру