The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Facebook анонсировал виртуальную машину HipHop и JIT-компилятор для языка PHP

12.12.2011 20:21

Компания Facebook открыла результаты работы группы, занимающейся экспериментами в области динамической трансляции кода на языке PHP в машинные инструкции. Разработка позиционируется как продолжение развития проекта HipHop, в рамках которого в прошлом году был разработан транслятор hphpc для преобразования PHP-скриптов в представление на языке C++, пригодное для дальнейшей компиляции при помощи g++ в машинные инструкции. В результате проведённой работы была создана виртуальная машина hhvm (HipHop Virtual Machine), которая за счет JIT-компиляции позволила обеспечить достойный уровень производительности при выполнении PHP-кода.

Hhvm позволяет выполнять практически любой PHP-код, используя в процессе JIT-компиляции динамические оптимизации, учитывающие особенности выполнения скрипта. Статическая компиляция при помощи hphpc вносила существенные ограничения на оформление кода и ограничивалась лишь статическими методами анализа при выработке плана оптимизации. При динамической трансляции в hhvm задействована возможность определения типов данных в процессе выполнения кода и генерации на лету более эффективных наборов машинных инструкций, оптимизированных специально для заданных типов.

Перед выполнением PHP-скрипты преобразуются, с задействованием наработок hphpc, в специальное промежуточное абстрактное представление AST (Abstract Syntax Tree), которое затем транслируется в байткод HHBC (HipHop bytecode), который в дальнейшем выполняется внутри высокоуровневой виртуальной машины. Виртуальная машина поддерживает два режима работы - интерпретация байткода и трансляция на лету в машинные инструкции x64. Оба режима могут бесшовно работать бок о бок, но в качестве перспективного направления развивается режим трансляции.

В настоящее время hhvm уже используется для обеспечения работы сервисов Facebook в качестве замены поддерживаемого силами компании высокопроизводительного PHP-интерпретатора hphpi, обеспечивая прирост производительности в среднем в 1.6 раз, при тестировании на реальных приложениях, используемых в Facebook. В дальнейшем планируется задействование hhvm для выполнения всего кода Facebook, написанного на языке PHP. Скорость работы режима трансляции hhvm приближается к производительности программ, скомпилированных при помощи hphpc (скорость режима интерпретации оценивается коэффициентом 0.2 от скорости скомпилированных программ, а режима трансляции - 0.6).

В настоящее время степень завершённости проекта оценивается в 90% Из планов на будущее отмечается определение формата для сохранения байткода на диске для сокращения времени запуска и сохранении накопленной в процессе выполнения статистики. Полностью стабилизировать работу динамической трансляции и довести уровень производительности до скомпилированных в hphpc программ планируется в течение нескольких месяцев. Код открыт под лицензией PHP и доступен для загрузки на странице проекта в GitHub.

  1. Главная ссылка к новости (https://www.facebook.com/note....)
  2. OpenNews: Проект NewSQL призван решить проблемы, с которыми столкнулся Facebook, используя MySQL
  3. OpenNews: PHP-транслятор HipHop позволил Facebook использовать в разы меньше оборудования
  4. OpenNews: Компания Facebook открыла код высокопроизводительного PHP транслятора
  5. OpenNews: Социальная сеть Facebook представила новый открытый web-сервер Tornado
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/32539-php
Ключевые слова: php, facebook, hiphop, jit, compile, transpale
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (47) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, evgeny_t (ok), 21:08, 12/12/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +12 +/
    PHP не помогут миллиарды фейсбука )
     
     
  • 2.4, jedie (?), 21:29, 12/12/2011 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Миллиарды может и нет, но развитие фреймворков - да.
    Да и сам язык вполне развивается. Чтобы там ни говорили про PHP, вряд ли
    с RoR или другими продуктами можно было бы создать что то подобное на Facebook или даже ВКонтакте.

    PHP - для реальных проектов. Все остальное гламур ;)

    P.S: ладно ладно, извиняюсь за пафос.

     
     
  • 3.13, satarsa (??), 22:41, 12/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Чтобы там ни говорили про PHP, вряд ли с RoR или другими продуктами можно было бы создать что то подобное на Facebook или даже ВКонтакте.

    Яндексу и гуглу расскажите об этом

     
     
  • 4.15, Бизон (?), 23:41, 12/12/2011 [^] [^^] [^^^] [ответить]  
  • –3 +/
    в Яндексе и гугле используют RoR?
    бугага
     
     
  • 5.16, satarsa (??), 23:49, 12/12/2011 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >в Яндексе и гугле используют RoR?
    >бугага

    В яндексе и гугле не используют php

     
     
  • 6.37, Аноним (-), 15:24, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Ну и где фэйсбук, а где яндекс?
     
     
  • 7.53, satarsa (??), 02:35, 17/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >Ну и где фэйсбук, а где яндекс?

    Думаете сервис по обмену ворованным барахлом, собственными мерзкими фотками и блевотными статусами "я покакала" сделать сложнее чем поисковый сервис мирового уровня (про гугл вы что-то не упоминули)?

     
  • 6.41, Аноним (-), 17:23, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +3 +/
    В гугле есть внутренний кусок на php, они через него пиццу заказывают.
     
  • 5.39, Аноним (-), 16:04, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Про рельсы я не в курсе, но точно знаю, что у них довольно сильно любят Django.
     
     
  • 6.45, anono (?), 11:30, 14/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    в яндексе перла много
     
  • 4.32, anonymous (??), 13:39, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Угу, и Википедии.
    Мож хватит меряться?
     
  • 3.14, max (??), 22:55, 12/12/2011 [^] [^^] [^^^] [ответить]  
  • –8 +/
    da vobshem twitter dolgoe vremja polnostju na RoR rabotal, lish nedavno nachali chto-to perepilivat' na skalu(fejsbuk tozhe DAAAVNO uzhe ne na obschedostupnon PHP rabotaet)
     
     
  • 4.38, Аноним (-), 15:25, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > rabotaet)

    Вы уж простите конечно, но за транслит хочется придушить даже в смсках, а уж в форумных сообщениях - в 3 раза сильнее.

     
  • 3.44, б.б. (?), 10:05, 14/12/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Чтобы там ни говорили про PHP, вряд ли с RoR или другими продуктами можно было бы создать что то подобное на Facebook или даже ВКонтакте.

    У нас к новому году планируется конкурс "самый смешной комментарий года"?

    Тогда я номинирую этот.

     
  • 3.48, Аноним (-), 07:28, 15/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Это ты серьезно? Слушай, есть такая дисциплина: "Программирование". И есть языки _программирования_. PHP - это что-то типа bash. Только еще более смешное и жалкое. Успех PHP и Java в этом мире обусловлен исключительно их целевой аудиторией: их может освоить человек, далекий от программирования и CS, не имеющий культуры мышления и проектирования. Это что-то типа "икорной закуски" вместо икры, Задорнова вместо Жванецкого... Короче для толп людей с низкой квалификацией и занимающих рабочие места программистов.
    Фейсбук назвать чем-то серьезным - никак невозможно. Школьно-студенческая развлекаловка (капитализация, очевидно же, не критерий), но масштабная.
     
  • 2.7, arka (?), 21:48, 12/12/2011 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > PHP не помогут миллиарды фейсбука )

    Но зато, как видим, миллиардам fb помогает php.

     
     
  • 3.11, я (?), 22:20, 12/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хорошо сказал, действительно пхп многим людям много миллиардов принесло
     
  • 2.35, Аноним (-), 14:21, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > PHP не помогут миллиарды фейсбука )

    Тем не менее, без пыхпыха у фэйсбука не было бы этих миллиардов ;)

     

  • 1.3, mef_ (?), 21:23, 12/12/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ждем первые реальные результаты тестирования.
     
  • 1.9, UltimateAnon (?), 22:13, 12/12/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Ещё одна победа C++
     
     
  • 2.12, тоже Аноним (ok), 22:23, 12/12/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    "представление на языке C++, пригодное для дальнейшей компиляции" - это вовсе не обязательно сколько-нибудь приличный код.
    Говнокод на С++ можно создавать из чего попало, но самому языку это скорее вредит...
     
  • 2.17, anonymous (??), 03:50, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +5 +/
    >Ещё одна победа C++

    Новость как раз о том, что от трансляции на С++ отказались в пользу более гибкого и производительного JIT'a. Так что это не победа С++, а победа его конкурента из того же разряда, что и java, donet, llvm etc.

     
     
  • 3.19, тоже Аноним (ok), 08:40, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Более производительного? Вы графики читать умеете? Где это JIT обогнал компилированный код?
     
     
  • 4.22, Aleks Revo (?), 10:43, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Пока что потенциально более производительного - динамическая оптимизация JIT вполне может обогнать статическую оптимизацию, если допилят. А плюсы интерпретируемых языков ещё никто не отменял
     
     
  • 5.31, Карбофос (ok), 13:34, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Пока что потенциально ... вполне может обогнать ...

    вот когда будет не потенциально, а реально, тогда и... ;) а так - может и вполне не сможет. не холивара ради.

     
  • 5.49, Аноним (-), 07:32, 15/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Пока что потенциально более производительного - динамическая оптимизация JIT вполне может
    > обогнать статическую оптимизацию, если допилят. А плюсы интерпретируемых языков ещё никто
    > не отменял

    Даже теоретически не может. Может только плохой компилятор проиграть хорошему интерпретатору (байт кода). А равного качества - ни-ког-да :)
    PS. Лично я обожаю интерпретаторы и убежден, что будущее ТОЛЬКО за ними, благодаря тому, что микропроцессоры, память и внешняя память подтянулись

     
  • 4.24, anonymous (??), 12:18, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Более производительного? Вы графики читать умеете? Где это JIT обогнал компилированный код?

    На данный момент их производительность практически одинаковая, с незначительным преимуществом на стороне С++. Только вот потенциал роста у JIT'a - просто гигантский, об этом говорят сами разработчики, которые не сомневаются, что вариант с JIT скоро будет более производительный. У С++ такого потенциала нет.

     
     
  • 5.26, Crazy Alex (ok), 12:50, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    0,6 - это нынче практически одинаковая? Хм... Я я то думал, что это почти вдвое отличие, что в случае фейсбука выливается в немалые затраты на железо. Но вообще - это будет, считай, первый проект где можно будет нормальную компиляцию с JIT сравнить.
     
  • 5.29, тоже Аноним (ok), 13:21, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Странно, если бы разработчики открыто признавались, что путаются в костылях...
    Впрочем, не буду отрицать возможный потенциал JIT.
    Только не надо обзывать то сырье для компиляции, которое выдает транслятор, "С++" и на этой почве заявлять, что у С++ нет потенциала.
     
     
  • 6.33, anonymous (??), 13:39, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Никто не спорит, что если писать изначально на плюсах, то производительность будет выше. Это очевидно. Тут речь идет об автоматических способах её поднять, с сохранением той же скорости разработки. Если бы фейсбук писали на С++, то совсем не факт, что он бы так же выстрелил, если он (сервис) вообще бы запустился в разумные сроки.
     
     
  • 7.40, тоже Аноним (ok), 16:17, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Также никто не спорит, что писать такие проекты ЦЕЛИКОМ на плюсах - большая архитектурная ошибка.
    Но в узких местах плюсы (или даже голый С) незаменимы, а хитрозакрученные костыли - это в лучшем случае паллиатив и компромисс. Возможно, рабочий и даже удачный, но неизбежно "неаккуратненький".
     
  • 5.34, AdVv (ok), 14:04, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Да да, скоро JIT обгонит нативный код по скорости. Там же "гигантский потенциал". Сразу после того, как на горе свистнет рак.
     
     
  • 6.43, anonymous (??), 03:24, 14/12/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Да да, скоро JIT обгонит нативный код по скорости. Там же "гигантский потенциал". Сразу после того, как на горе свистнет рак.

    А результат работы JIT компилятора - это что по-Вашему? Не нативный код? Единственное отличие здесь в том, что понадобится некоторое время на первый запуск, после чего это будет такой же нативный код. Только гораздо более оптимизированный.

     
     
  • 7.46, AdVv (ok), 15:42, 14/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>Да да, скоро JIT обгонит нативный код по скорости. Там же "гигантский потенциал". Сразу после того, как на горе свистнет рак.
    > А результат работы JIT компилятора - это что по-Вашему? Не нативный код?
    > Единственное отличие здесь в том, что понадобится некоторое время на первый
    > запуск, после чего это будет такой же нативный код. Только гораздо
    > более оптимизированный.

    Ваши аргументы напоминают рекламу краски для волос, которая на 120% "более сияющая". С какой бы стати он будет "гораздо более оптимизированный" ? Откуда возьмется необходимый запас по оптимизации кода, когда при компиляции и так выжимается все, что можно ? По вашему все разработчики компиляторов законченные кретины  ? Или может операционные системы тоже пора на PHP переписывать, будут "гораздо более оптимизированными". Что-то за 15 лет разработки Java JIT хоть и делает php как бог черепаху, но так и не сравнялась с С++ ни по скорости, ни тем более по потребляемым ресурсам.

     
     
  • 8.47, анонимус (??), 06:58, 15/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я тоже сильно сомневаюсь, что jit будет способен обогнать компилятор с , но дум... текст свёрнут, показать
     
     
  • 9.52, AdVv (ok), 12:51, 15/12/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Никто и не говорит что кретины, очень даже наоборот да и сама по себе задумка п... текст свёрнут, показать
     
  • 3.20, Sinot (ok), 08:43, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Только не языки. Отказались от статической компиляции в пользу динамической.
     
  • 3.36, Аноним (-), 14:22, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >>Ещё одна победа C++
    > Новость как раз о том, что от трансляции на С++ отказались в
    > пользу более гибкого и производительного JIT'a.

    Вообще, из графика пока следует обратное ;)

     
  • 2.25, Crazy Alex (ok), 12:48, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Оно к плюсам ортогонально. если б хипхоп компилировал в паскаль или в С - ничего бы не поменялось.
    По сабжу - с одной стороны - это уход от нормальной компиляции в сторону JIT - ну вот и поглядим, что у них получится из быстродействия выжать. С другой - компиляция динамически типизируемого языка - вещь вообще слабо осмысленная.
     

  • 1.10, Аноним (-), 22:19, 12/12/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    намеспайсы то запилили?
    иссуе тракер радует отпадением всякого
    сыро или непонятно как внутри работает.
     
     
  • 2.27, Crazy Alex (ok), 12:52, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    А оно им нужно? Как ни крути, вряд ли фейсбуку сильно необходим PHP полностью совместимый с зендовским.
     
  • 2.28, анонимус (??), 13:20, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > намеспайсы то запилили?

    Надеюсь, что нет. Неймспейсы придумал тот, кто не осилил grep и решил ему отомстить.

     
     
  • 3.30, Аноним (-), 13:30, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    какая связь между grep и неймспейсами?
     
     
  • 4.54, Люк (?), 07:37, 23/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Неймспейсы можно грепать же )
     

  • 1.21, Аноним (-), 09:09, 13/12/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Hhvm позволяет выполнять практически любой PHP-код
    > практически любой

    Вот тут бы поподробнее - насколько фейсбучная реализация языка соответствует стандартной? Вроде поддерживается версия 5.2, но насколько полно?

     
     
  • 2.42, Аноним (-), 18:36, 13/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    issue tracker в помощь)
    а так же стандартные пхп тесты)
     

  • 1.55, Аноним (-), 19:59, 23/12/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Весь инет правктически на php.
    А новость реально радует.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру