ФорумПрограммированиеPHP для идиотовРасширения PHP → HHVM, Phalcon

HHVM, Phalcon

  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 8 января 2014 г. 3:24

    Какой-то неадекват-спамер апнул довольно интересную тему http://pyha.ru/forum/topic/7481 . В ней парень хочет вынести некоторые частоиспользуемые и медленные куски кода в расширение на c.

    Подход не новый. В Twig'е есть экстеншн, в котором реализована, пожалуй, наиболее частоиспользуемая ф-ция twig_get_attribute. Есть даже фреймворк Phalcon, который написан в виде сишного расширения к пыху. Причем он не такой уж и ебанутый, в нем есть и DI, и ORM'ка, и даже, темплейт энжин, похожий на твиг.

    В тоже время, а есть ли смысл так извращаться? Ведь можно поставить HHVM или Zephir от тех же Phalcon'овцев и пхпшный код будет автоматром транслитерироваться в сишный.

    Что вы думаете на это все? Пользовались ли уже в продакшене? Как по мне - очень перспективная тема.
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 8 января 2014 г. 10:09, спустя 6 часов 44 минуты 55 секунд

    Пользовались. Потом утечки памяти давили постоянно, а толку кот накакал.

    Думаю, если это действительно часто вызываемый маленький кусочек, который легко на сях воспроизвести и это даст ощутимый прирост, то есть смысл.
    А большой кусок логики переписывать, скорее всего смысла не имеет.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 8 января 2014 г. 15:01, спустя 4 часа 52 минуты 13 секунд

    а толку кот накакал.


    А как же подобные тесты http://www.hhvm.com/blog/1817/fastercgi-with-hhvm ? Брешут, собаки?) Или у тебя такой код специфический, что его hhvm не берет?
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 8 января 2014 г. 15:48, спустя 46 минут 53 секунды

    "пользовались" имел ввиду расширения для Ц писали.
    ХХВМ не пользовались.

    Не знаю, что у них за вордпресс в тестах.
    Смотрю на свой - 95% времени на злоебучие запросы к базе уходит.
    Ну, оптимизирует он мне оставшиеся 5% и толку то?
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 9 января 2014 г. 7:54, спустя 16 часов 5 минут 55 секунд

    Трансляцию в C++ делал HPHPc, предшественник HHVM. HHVM - это уже виртуальная машина, как та же JVM (байт-код, JIT-компиляция).

    В продакшене не приходилось использовать, но в скором времени вполне возможно - там уже практически 100%-ая совместимость с 5.4 и 5.5.
    Плюс радуют дополнительные фишки, типа scalar type hinting и generics. Основная проблема сейчас - отсутствие документации (т.е. её вообще нет, никакой), но вроде разработчики писали, что это среди основных приоритетов в этом году.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 8 февраля 2014 г. 7:54, спустя 29 дней 23 часа 59 минут

    Работа веб-сайта/веб-сервиса это 95% работы с базой.

    Если hiload там все по другому совсем.

    Как сказал олег выше - толку то от оптимизации этих 5%? Учитывая что там будет boost ну скажем ОЧЕНЬ СИЛЬНЫЙ - 50%. Итого 5% от 50% - 2.5%, было 100, стало 97.5.

    бред :)
    Сапожник без сапог
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 9 февраля 2014 г. 16:05, спустя 1 день 8 часов 10 минут

    Хз хз.

    Примерно полгода назад проводил эксперимент: ради спортивного интереса запустил один legacy-проект на битриксе под HHVM. Завелось почти сразу. Пришлось пофиксить пару строчек в самом битриксе, но это пустяки. Больше ничего не трогал.

    Ну так вот. Скорость генерации страниц увеличилась примерно в 1,5—2,5 раза. Подробных бенчмарков не делал, тупо было лень - смотрел время в dev tools браузера. Но результат был очевиден. Одна и та же машина, один и тот же код, одна и та же база, но работало быстрее.
    Конечно, битрикс - это хуевый показатель, но всё-таки.

    Для тяжелых фреймворков (ZF2, Symfony2, etc) прирост производительности тоже может быть заметным. Хотя, да, пока можно только гадать.

    Спустя 517 сек.

    Кстати, новая презентация от разрабов.
    Приводят графики производительности для Symfony2 и Magento.

    +

    ▪ Scalar type hint (and much much more)
    ▪ Async co-routines
    ▪ Generics
    ▪ Collections (smart arrays)
    ▪ XHP (Integrated XHTML)
    ▪ User Attributes


    А так же про дебаггер и про написание расширений для PHP на самом PHP (трансляция в C++).
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 9 февраля 2014 г. 19:16, спустя 3 часа 11 минут 8 секунд

    @Timur, ссылка битая. Вообще как я погляжу, у многих после переписа пыхи вставляются битые ссылки
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 9 февраля 2014 г. 19:45, спустя 29 минут 19 секунд

    а в маркдауне норм

    пыхослёт

  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 9 февраля 2014 г. 21:21, спустя 1 час 36 минут 12 секунд

    Дуд вернулся, какая-то движуха началась
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 9 февраля 2014 г. 21:26, спустя 4 минуты 40 секунд

    так вернулся, что снова нету

    Спустя 23 сек.

    а, он же обещал не материться, поэтому нечего теперь писать :D

  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 9 февраля 2014 г. 22:18, спустя 51 минуту 36 секунд

    Да надо просто допиливать bbcode парсер, он стремненький, так как ббкоды уже никому не нужны в мире видимо...

    Если есть на примете что-то лучше или есть желание пофиксить текущий, то смотрите "forum/utils.py" и помогайте проекту

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 9 февраля 2014 г. 22:54, спустя 36 минут 23 секунды

    тимур, я бы тебя процитировал да не вижу кнопки :D

    Есть пара НО в твоем тесте.

    Ты уверен что запускал код с опкод кешером любым? XCache/Apc/ZendOptimizer?

    Смотрел статистику кешера? Хватало там памяти на кеширование? Проверялись ли mt у файлов?

    Прирост может быть только ан нативных функциях, которые они могли переписать в хпхвм, вот в это верю, ибо нативки работают часто очень странно. Недавно переделывал один простой до боли класс-прокси, мой код на пхп который просто в массиве([][]) искал массив попадающий под необходимые условия работал не соврать бы, но раз в 15-или 30 ли даж быстрее чем array_filter.

    Поэтому тесты не считаю пока не вижу environment ;)
    Сапожник без сапог
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 9 февраля 2014 г. 23:35, спустя 41 минуту 14 секунд

    @phpdude, не стану спорить :)
    APC был включен, но профайлингом не занимался. В тот момент, я больше хотел убедиться что этот HHVM вообще работает. Так что это скорее просто «субъективное наблюдение», не более того.

    По поводу источников прироста производительности - у них там вроде как JIT, вывод типов и т.д.

    @Абырвалг, попробую ещё раз - http://dl.hhvm.com/resources/conf/2014/Hacking%20with%20HHVM.pdf
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 9 февраля 2014 г. 23:51, спустя 16 минут 16 секунд

    @Timur, Если APC с дефолтными настройками, то на бирикс я полагаю их недостаточно))))

    ну да пох, работает и хрен с ним
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!