Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

HHVM: тестирование продуктивности и совместимости с Joomla, Битрикс и WordPress

Anna | 31.05.2014 | нет комментариев

Про HHVM теснее писали на Прогре. Лаконично: HHVM — это виртуальная машина от Facebook, которая за счет трансляции и JIT-компиляции кода разрешает ускорить PHP в несколько раз. Разработчики также обещают фактически полную совместимость с PHP 5.4.

Я решил сравнить HHVM с нативным интерпретатором на нескольких тестах, а также испробовать запустить на нем CMS.

Данные тестирования

Тестирование проводилось в виртуальной машине с конфигурацией процессор 2 ядра Core i5 @ 3,3 ГГц, 8 Гб ОЗУ.
ОС: Ubuntu 12.04 x86_64.
PHP: 5.3.10-1ubuntu3.7
Nginx: 1.1.19
Apache: 2.2.22
HHVM: 2.1.0-dev
В настройках были увеличены таймауты выполнения и memory_limit, включен APC. Никакого добавочного тюнинга не производилось.

HHVM установлена из исходников по инструкции.

Бенчмарки

Было подготовлено несколько скриптов, всякий из которых был запущен 50 раз: по 10 раз в PHP CLI, HHVM CLI, Apache mod_php, nginx php-fpm, и nginx HHVM. Средняя длительность выполнения в секундах представлена в таблице. В последних 2-х столбцах обозначен выигрыш в скорости выполнения при применении HHVM.

CLI HTTP Приход скорости по сопоставлению
Тест PHP HHVM Apache mod_php Nginx php_fpm Nginx HHVM PHP CLI PHP-FPM
asort 42,4 17,9 N/A1 40,9 18,9 137,0% 116,7%
bcmath_factorial 3,4 3,0 3,4 3,4 2,8 13,9% 21,5%
curl_multi 8,6 8,4 9,7 9,0 9,7 2,3% -7,0%
domdocument 50,2 51,0 54,3 50,1 50,1 -1,5% 0,0%
for 60,5 36,9 60,8 61,0 211,2 63,7% -71,1%
geoip 14,4 15,6 14,7 14,9 5,0 -7,8% 198,0%
getid3 46,5 26,9 46,2 45,6 8,5 72,4% 435,5%
mb_strings 22,8 16,8 7,0 22,2 17,0 35,8% 31,0%
md5 36,8 35,7 37,0 37,2 27,2 3,2% 36,7%
preg 11,6 10,9 11,6 11,7 10,9 6,1% 7,9%
prime 4,2 5,6 4,2 4,3 2,5 -24,1% 71,8%
sort 46,3 17,8 N/A1 44,1 17,5 160,1% 151,8%
sqlite 12,4 10,0 12,6 12,2 15,2 23,7% -19,9%
strings 38,6 37,5 37,8 38,2 36,0 3,0% 6,3%
tcp_client 15,4 13,2 15,5 17,3 13,6 16,9% 27,7%
tcpdf 3,3 2,4 3,4 4,4 1,4 38,7% 215,1%
thumbnail 100,8 94,8 93,7 99,9 94,2 6,3% 6,1%

1 — Apache не сумел исполнить asort.php и sort.php — падал с out of memory

asort — сортировка ассоциативного массива строк с 10 млн. элементов
bcmath_factorial — вычисление факториала числа 1000 функцией bcmul
curl_multi — скачивание 100 файлов по 1 Мб в 10 потоков из Интернет
domdocument — разбор большого XML (122 тыс. тегов) — для примера взял sitemap ag.ru
for — 3 вложенных for по 1000 итераций (каждого 1 млрд.)
geoip — 100 тыс. поисков IP по базе GeoIP
getid3 — приобретение ID3 тегов из MP3 с поддержкой библиотеки getID3() — 10 тыс. раз
mb_strings — применение mb_strlen, mb_ereg_replace, mb_substr, mb_strpos, mb_strtolower 1000 раз на первом томе «Войны и мира»
md5 — генерация md5 от чисел от 1 до 100 млн
preg — поиск preg_match_all hex-кодов цветов, тегов и URL на HTML-странице — 1000 раз (для примера взята основная Програ)
prime — приобретение всех примитивных чисел от 2 до 1 млн. перебором «в лоб»
sort — сортировка массива строк 10 млн. элементов с числовыми индексами
sqlite — 10 тыс. запросов SELECT к БД sqlite3
strings — применение strlen, str_replace, substr, strpos, strtolower 10 тыс. раз на первом томе «Войны и мира»
tcp_client — 10 тыс. конектов к localhost и чтение 2 Мб по TCP (CHARGEN)
tcpdf — генерация многостраничной PDF библиотекой TCPDF — 10 раз (взят пример example_061.php)
thumbnail — 10 тыс. созданий thumbnail изображения с поддержкой GD imagecopyresized()

Также я хотел прогнать тест со Smarty, но HHVM не сумел его выполнить.

Истолковывание итогов

Безусловно, бенчмарки не могут всецело показать обстановку с эффективностью. Но все-таки кое-какие итоги дозволено сделать.

  1. Время выполнения всякого прогона теста от среднего отличалось ненамного — значит итог дозволено считать стабильным.
  2. Аномальных итога два: слишком стремительное выполнение теста mb_string на Apache mod_php и слишком неторопливое выполнение for на nginx HHVM. Тесты я перепроверил, но не знаю, в чем дело.
  3. Что в CLI-версии, что при применении для веб HHVM дает преобладание в половине тестов.
  4. В некоторых случаях применение HHVM как бекенда nginx (т.е. не как CLI) дает еще больший приход — видимо, за счет активизации JIT. Обратите внимание насколько стремительней работают трудные библиотеки getid3 и TCPDF.

Тестирование CMS

WordPress

То, что WordPress запускается на HHVM было вестимо предварительно. Необходима лишь маленькая корректировка в одном файле.

Примитивный тест: загрузка основной страницы 100 раз в один поток.
nginx HHVM: 4.498 с
Apache mod_php: 9.997 c
Apache mod_php APC: 6.567 c
nginx php-fpm APC: 5.460 с

Обращаю ваше внимание, что это был тест именно времени отклика страницы, а не нагрузочное тестирование в несколько потоков.

Битрикс и Joomla

Битрикс и Joomla на HHVM запускаться отказались, выдав неизбежную ошибку. Я подозреваю, что Битрикс веры запустить вообще нет, т.к. там применяются deprecated функции и mbstring.func_overload.

Обзор Интернета показал, что пока именно Worpress проще каждого запустить под HHVM. С другими CMS и фреймворками все не так светло, скажем в недавнем топике на Прогре Symfony2 не взмыла.

Допустимо, тем, кому эффективность ну дюже главна, стоит сразу писать фреймворк под HHVM?

Итоги

1) HHVM дает отличный приход продуктивности на некоторых задачах — допустимо применять его для запуска процессов фоновой обработки чего-либо. Помните, что HHVM не результативен при применении глобальным переменных.

2) В подлинный момент применение существующих библиотек, фреймворков и CMS с HHVM затруднено. HHVM заточена под продуктивность и может не поддерживать разные прекрасные конструкции. Впрочем в грядущем обстановка будет улучшаться, т.к. и HHVM, допустимо, начнет поддерживать отменнее язык и разработчики могут озадачиться адаптацией своего кода под HHVM.

3) На WordPress HHVM показала заметный рост продуктивности — в 2 раза по сопоставлению с mod_php.

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB