The OpenNET Project / Index page

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



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

Исходное сообщение
"Новая версия PHP QB 1.3, позволяющего существенно увеличить ..."
Отправлено opennews, 21-Июн-13 21:41 
Вышла (http://www.php-qb.net/index.php/2-uncategorised/18-version-1...) новая версия расширения PHP QB 1.3 (http://www.php-qb.net), предоставляющего (https://github.com/chung-leong/qb/wiki/Introduction) средства для написания требовательных к производительности приложений на языке 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, в нём нет ассоциативных массивов, в силу этого действия операторов также во многом отличаются (https://github.com/chung-leong/qb/wiki/Differences-Between-P...) от эталонной реализации 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 (https://github.com/chung-leong/qb/wiki/blend).
-  Добавлена инструкция умножить-аккумулировать. $d = $c + ($a * $b) сейчас производится в одну инструкцию, с по существу бесплатной операцией сложения.
-  Импортированные ядра Adobe Pixel Bender сейчас работают с предумноженным альфа-каналом так как они должны.
-  Добавлена поддержка Mac OS X Mountain Lion.


<center><a href="http://www.php-qb.net/images/fannkuch-chart.png"><... src="https://www.opennet.ru/opennews/pics_base/0_1371835414.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;" title="" border=0></a></center>


На графике показана производительность PHP QB (http://www.php-qb.net/index.php/2-uncategorised/3-on-perform...) в тесте fannkuch-redux из Computer Language Benchmark Game (http://benchmarksgame.alioth.debian.org). (1) Zend PHP, (2) PHP+QB в режиме интерпретации и (3) в режиме компиляции (с использованием gcc).

<center><a href="http://www.php-qb.net/images/crc32-chart.png"><img src="https://www.opennet.ru/opennews/pics_base/0_1371835395.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;" title="" border=0></a></center>


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

URL: http://www.php-qb.net/index.php/2-uncategorised/18-version-1...
Новость: https://www.opennet.ru/opennews/art.shtml?num=37244

 

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



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

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