Тесты производительности. PHP-FPM + OPcache vs HipHop vs Си vs kPHP


Конфигурация:
  • Intel Dual Core 1.60GHz, 8Gg RAM
  • PHP-FPM (PHP 5.5.3) + OPcache
  • HipHop VM 2.4.0 (rel)
  • В качестве веб севера выступал nginx/1.4.1 (Ubuntu)

    Подсчет миллионного знака числа Пи

    Был написал эквивалентный код на php и Си для подсчета миллионного знака числа Пи по формуле Бэйли — Боруэйна — Плаффа.
  • PHP-FPM: Server:37.86687 s. Mem: 0.5 Mb
  • HHVM: Server:12.00476 s. Mem: 0.19 Mb
  • Чистый С, компилятор gcc: 3.9662 s. (php еще есть куда расти :)

    Вычисление числа Пи (100,000,000 итераций)

    Так как на kPHP не работает тип double, пришлось сделать более простой тест.
  • PHP 5.5.3: 0m17.935s
  • HHVM 0m12.918s
  • kPHP 0m2.943s
  • GCC 0m2.913s

    Помощник для игры балда

  • PHP-FPM: Server:0.04178 s. Mem: 10.75 Mb
  • HHVM: Server:0.00742 s. Mem: 0.32 Mb

    Страница со статическим контентом

  • PHP-FPM: Server:0.00249 s. Mem: 0.5 Mb
  • HHVM: Server:0.00218 s. Mem: 0.17 Mb
    * Память измерялась через memory_get_peak_usage(1)

    Проблемы при переходе с PHP 5.5 на HHVM:

  • "Плохие" ключи для memcache крашели весь сервер. Пришлось заменить на md5(key)
  • HipHop Warning: Unable to handle compressed values yet (memcache)
  • Parameter 1 to function(&$p1) expected to be a reference, value given
  • Появился предопределенный класс map. Пришлось у себя в коде переименовать.
  • php.ini по умолчанию не подключен (подключить можно server.hdf IniFile = /etc/hhvm/php.ini), phpinfo() покажет заглушку
  • Нет авто деструктора при выключении скрипта
  • HipHop Warning: Out of bounds $this->value[0] == '-' , если $this->value = ''
  • HipHop Warning: Failed to write session data (user). Please verify that the current setting of session.save_path is correct ()