2015-07-03 3 views
-1

Хорошо, поэтому я действительно хочу использовать и верю в HHVM, однако в каждом тесте, который я выполняю, HHVM выходит медленнее, чем PHP. Я запустил много разных тестов для очень сложных сценариев с большим количеством обработки простых скриптов. Для демонстрации я покажу вам результаты с (действительно) простым скриптом.HHVM медленнее, чем PHP 5.5.9 в CLI

public function hhvm(){ 
    $list = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25); 

    $this->benchmark->mark('code_start'); 

    for ($i=0 ; $i<100 ; $i++) { 
    serialize($list); 
    } 

    $this->benchmark->mark('code_end'); 
    echo $this->benchmark->elapsed_time('code_start', 'code_end'); 
} 

Оба HHVM и PHP работают на том же сервере в CLI: Система ...

  • Ubuntu 14,04
  • 4 твердотельных накопителей в RAID 0
  • 2x Hexcore Xeons
  • 64GB Ram
  • Codeigniter 3.0 (framework)
  • PHP 5.5.9
  • HHVM (Последний стабильный релиз от 2/7/2015)

Этот сценарий запуска в 20 раз по каждому из приведенных ниже команд со следующими результатами:

"hhvm /var/www/vhosts/test.local/httpdocs/index.php test hhvm"

Среднее время выполнения = 0,0021

"hhvm -v Eval.Jit=1 -v Eval.JitProfileInterpRequests=0 /var/www/vhosts/test.local/httpdocs/index.php test hhvm"

Среднее время выполнения = 0,0020

"php /var/www/vhosts/test.local/httpdocs/index.php test hhvm"

Среднее время выполнения = 0,0003

Очевидно, это небольшой скрипт, я побежал много гораздо больше сценариев через него и раз я был видящим были PHP = 5.2s HHVM = 6.4s, который не кажется много, но когда у вас слишком много из них работает, все это складывается.

Так что мой вопрос .. Какого черта я делаю неправильно? Почему я не могу установить HHVM быстрее, чем PHP. (это несовместимо с CI3.0? хотя сайт HHVM говорит, что 100% совместим?)

EDIT: Итак, после поиска и поиска, кажется, никто не может дать ответ, я протестировал без работы с каркасом CI3, используя просто стандартный PHP, и результаты почти одинаковы, я попросил 3 других на разных форумах протестировать, и они получают точно такие же результаты. Я пришел к выводу, что HHVM - это шумиха, а в реальных сценариях он просто не разрезает горчицу. Если есть кто-нибудь, чем может доказать мне, что я ошибаюсь, мне хотелось бы услышать от вас, поскольку теоретически HHVM звучит потрясающе, и я бы хотел использовать что-то, что оптимизирует выполнение кода столько, сколько оно требует.

ответ

1

Я столкнулся с плохими характеристиками hhvm. Я никогда не сравнивал его с обычным php, но в моем случае это было вызвано тем фактом, что по умолчанию в php.ini включен журнал ошибок. Когда я отключил его, производительность значительно улучшилась.

Другое дело, что вы отключили запросы на разогрев. Эта функция была для оптимизации. В некоторых случаях это могло бы помочь немного увеличить это значение и запустить его несколько раз.

Это также вероятность того, что codeignighter вызовет проблему.Похоже, что работа над глобальным охватом снижает производительность. Я не знаю, как построен код ignighter. Но кажется, что работает как можно больше кода от функции и только вызов функции в глобальном масштабе помогает многое.

+0

Привет, да, я отключил регистрацию ошибок в /etc/hhvm/php.ini, и это не имело никакого значения. Также первый запрос (выполнялся 20 раз) был с настройками HHVM по умолчанию, поэтому было время прогрева (что, по моему мнению, стандартно 12 раз). :-( – Kirk

 Смежные вопросы

  • Нет связанных вопросов^_^