Новая версия PHP QB 1.3, позволяющего существенно увеличить производительность PHP-программ

Вышла новая версия расширения PHP QB 1.3, предоставляющего средства для написания требовательных к производительности приложений на языке PHP.

В то время как PHP является отличным языком для создания сложных веб приложении, он имеет несколько определённых ограничений. Написание кода который выполняет низкоуровневые, интенсивные по вычислениям задачи, в основном не практично - он просто будет слишком медленен. Расширение QB направлено на устранение этой слабости PHP. Транслируя Zend опкод и исполняя его с помощью статически типизированной виртуальной машины или преобразуя его в нативный исполняемый код, QB обеспечивает колоссальный прирост производительности (от 5 до 20 раз). Добавленная мощность позволяет программистам на языке PHP делать вещи которые они не могли сделать ранее, такие как сложные операции с видео и изображениями на уровне пикселей.

В QB программа может быть скомпилирована как в родной для платформы код, так и в байткод для исполнения в виртуальной машине. Код, использующий QB, можно как вызывать из классов, написанных для Zend PHP. Трансляция выполняется на уровне отдельных функций и затрагивает только специальным образом помеченный код. Взаимодействие кода PHP QB и кода PHP осуществляется бесшовно - после компиляции функции на PHP QB становятся видимы из PHP-приложения как обычные функции. Таким образом с использованием PHP QB могут выполняться только критичные к производительности участки кода.

Особенностью расширения PHP QB является то, что оно использует сведения указанные в блоках PHPDoc для получения информации о типах данных. Хотя PHP QB в основном совместим с Zend PHP, он имеет несколько отличий которые позволяют его считать отдельным языком. Например массивы являются просто блоками памяти в PHP QB, в нём нет ассоциативных массивов, в силу этого действия операторов также во многом отличаются от эталонной реализации Zend PHP. Большинство операторов в PHP QB поддерживают на входе как скалярные данных так и массивы. Таким образом реализуется принцип "одна инструкция, много данных". Например результатом $b = array(1, 2, 3, 4); $b += 10; будет [11, 12, 13, 14]. В PHP QB нет типа строка, это просто массив uint8.

Основными нововведениями в версии PHP QB 1.3 являются улучшение производительности компилированного кода, также сокращение использование памяти при компиляции. Некоторые изменения:

  • Для преобразований float-в-int, когда это возможно, используется инструкции SSE.
  • Добавлена функция blend.
  • Добавлена инструкция умножить-аккумулировать. $d = $c + ($a * $b) сейчас производится в одну инструкцию, с по существу бесплатной операцией сложения.
  • Импортированные ядра Adobe Pixel Bender сейчас работают с предумноженным альфа-каналом так как они должны.
  • Добавлена поддержка Mac OS X Mountain Lion.

На графике показана производительность PHP QB в тесте fannkuch-redux из Computer Language Benchmark Game. (1) Zend PHP, (2) PHP+QB в режиме интерпретации и (3) в режиме компиляции (с использованием gcc).

На графике показана производительность PHP QB при рассчёте контрольной суммы CRC-32 для данных размером в 10мб.

Источник:
http://www.opennet.ru/opennews/art.shtml?num=37244

<= Назад
Комментарии
]]> ipv6 ready Kiev LUGLinux4MeНостальгияЛичный сайт skeletora ]]>