<h1>Тесты производительности. PHP-FPM + OPcache vs HipHop vs Си vs kPHP</h1><div><br></div> Конфигурация: <li>Intel Dual Core 1.60GHz, 8Gg RAM </li><li>PHP-FPM (PHP 5.5.3) + OPcache </li><li>HipHop VM 2.4.0 (rel) </li><li>В качестве веб севера выступал nginx/1.4.1 (Ubuntu) <br> <h4>Подсчет миллионного знака числа Пи</h4> Был написал эквивалентный код на php и Си для подсчета миллионного знака числа Пи по формуле Бэйли — Боруэйна — Плаффа. </li><li>PHP-FPM: Server:37.86687 s. Mem: 0.5 Mb </li><li>HHVM: Server:12.00476 s. Mem: 0.19 Mb </li><li>Чистый С, компилятор gcc: 3.9662 s. (php еще есть куда расти :) <h4>Вычисление числа Пи (100,000,000 итераций)</h4> Так как на kPHP не работает тип double, пришлось сделать более простой тест. </li><li>PHP 5.5.3: 0m17.935s </li><li>HHVM 0m12.918s </li><li>kPHP 0m2.943s-----</li><li>GCC 0m2.913s <h4>Помощник для игры балда</h4> </li><li>PHP-FPM: Server:0.04178 s. Mem: 10.75 Mb </li><li>HHVM: Server:0.00742 s. Mem: 0.32 Mb <h4>Страница со статическим контентом</h4> </li><li>PHP-FPM: Server:0.00249 s. Mem: 0.5 Mb </li><li>HHVM: Server:0.00218 s. Mem: 0.17 Mb <br> <small>* Память измерялась через memory_get_peak_usage(1)</small> <br><br> <h1>Проблемы при переходе с PHP 5.5 на HHVM:</h1> </li><li>\"Плохие\" ключи для memcache крашели весь сервер. Пришлось заменить на md5(key) </li><li>HipHop Warning: Unable to handle compressed values yet (memcache)</li><li>Parameter 1 to function(&amp;$p1) expected to be a reference, value given </li><li>Появился предопределенный класс map. Пришлось у себя в коде переименовать. </li><li>php.ini по умолчанию не подключен (подключить можно server.hdf IniFile = /etc/hhvm/php.ini), phpinfo() покажет заглушку </li><li>Нет авто деструктора при выключении скрипта </li><li>HipHop Warning: Out of bounds $this-&gt;value[0] == \'-\' , если $this-&gt;value = \'\' </li><li><span style=\"color: rgb(80, 0, 80); font-family: arial, sans-serif; line-height: normal; background-color: rgb(255, 255, 255);\">HipHop Warning: Failed to write session data (user). Please verify that the current setting of session.save_path is correct ()&nbsp;</span><br></li>