The OpenNET Project / Index page

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

02.02.2010 22:36  Компания Facebook открыла код высокопроизводительного PHP транслятора

Разработчики социальной сети Facebook представили проект "HipHop" - новый открытый транслятор для языка PHP, распространяемый в рамках свободной лицензии PHP. HipHop трансформирует код PHP скриптов в высоко оптимизированное представление на языке C++, пригодное для дальнейшей компиляции при помощи g++ в машинные инструкции. В настоящее время HipHop используется для обработки около 90% запросов в сети Facebook.

В состав пакета входит транслятор кода, переработанный PHP runtime и набор переписанных с целью повышения производительность стандартных библиотек и расширений. По заявлению разработчиков использование HipHop позволяет уменьшить нагрузку на CPU примерно на 50%. Обратной стороной высокой производительности является принципиальное отсутствие поддержки некоторых PHP конструкций, таких как eval(). HipHop содержит более 300 тыс. строк кода и 5 тыс. unit-тестов, загрузить исходные тексты транслятора можно будет через несколько часов с сервиса GitHub.

Проект создан как универсальная альтернатива традиционному в больших проектах способу оптимизации - переписыванию наиболее ресурсоемких участков PHP кода на языке C/C++ и оформления таких блоков в виде PHP расширений. Перед созданием HipHop в Facebook были предприняты и другие методы оптимизации, например, был переписан код Zend Engine и патчи переданы проекту PHP, но результат подобной оптимизации оказался не таким большим как хотелось бы. Zend Engine преобразует исходные тексты на языке PHP в опкод, который затем выполняется на виртуальной машине Zend. Проекты подобные APC и eAccelerator кешируют сгенерированный опкод, а Zend Server кроме кеширования добавляет в опкод некоторые дополнительные оптимизации.

Из других подобных проектов отмечены компиляторы phc и Roadsend, преобразующие PHP код в представление на языке Си, Quercus - транслятор PHP в Java и проект Phalanger, преобразующий PHP код в .Net.

  1. Главная ссылка к новости (http://developers.facebook.com...)
Лицензия: CC-BY
Тип: Интересно / К сведению
Ключевые слова: Facebook, php, compile, gcc, optimization, tune, speed
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, ПринцЧорнойТьмы (?), 23:02, 02/02/2010 [ответить] [показать ветку] [···]    [к модератору]
  • +3 +/
    Отличное название!
     
  • 1.4, аноним (?), 23:18, 02/02/2010 [ответить] [показать ветку] [···]    [к модератору]
  • +7 +/
    Я всегда говорил что любая интерпретируемая дрянь все равно надо или поздно вернется к нативному коду.
     
     
  • 2.5, IGX (?), 23:38, 02/02/2010 [^] [ответить]    [к модератору]
  • +2 +/
    Да. Чем больше популярность языка, тем выше к нему требования, включая производительность.
     
  • 2.7, User294 (ok), 23:52, 02/02/2010 [^] [ответить]     [к модератору]
  • +1 +/
    Знаете, самое издевательское во всей скриптовой байде то что ПРОЦ НЕ УМЕЕТ ВЫПОЛ... весь текст скрыт [показать]
     
     
  • 3.12, Gambler (ok), 00:22, 03/02/2010 [^] [ответить]     [к модератору]  
  • –5 +/
    Неа Вопрос не весь Еще есть такая штука, как архитектура Если оптимальный ско... весь текст скрыт [показать]
     
     
  • 4.13, User294 (ok), 00:35, 03/02/2010 [^] [ответить]     [к модератору]  
  • +/
    А тут все просто По умолчанию подразумеваются равные стартовые условия для всех... весь текст скрыт [показать]
     
  • 4.24, Карбофос (ok), 09:27, 03/02/2010 [^] [ответить]     [к модератору]  
  • +/
    это шедевр а примеры будут о, да в одном случае получаем Parse error syntax ... весь текст скрыт [показать]
     
     
  • 5.54, Gambler (ok), 21:00, 03/02/2010 [^] [ответить]     [к модератору]  
  • –2 +/
    Java EE И не надо говорить что она не компилируется - все нормальные VMы давно ... весь текст скрыт [показать]
     
     
  • 6.56, Карбофос (ok), 21:58, 03/02/2010 [^] [ответить]     [к модератору]  
  • +2 +/
    тут кто-то говорит, что ява не компилируется ужас, если вам такое послышалось, ... весь текст скрыт [показать]
     
  • 5.69, User294 (ok), 00:08, 06/02/2010 [^] [ответить]     [к модератору]  
  • +2 +/
    Можно пример Скажем если есть массив из 100 000 000 записей, лобовой перебор та... весь текст скрыт [показать]
     
     
  • 6.71, Карбофос (ok), 15:31, 06/02/2010 [^] [ответить]     [к модератору]  
  • +/
    конечно, как и все тесты производительности java vs c c где первая по результа... весь текст скрыт [показать]
     
  • 2.29, Чорная дипрессия 666 (?), 10:12, 03/02/2010 [^] [ответить]    [к модератору]  
  • –2 +/
    Ерунда. Основные тормоза у дисковой подсистемы и базы данных.
    И у фейсбука, как я понял, только часть кода скомпилирована с помощью этой новой хрени.
     
  • 1.6, Altie (?), 23:43, 02/02/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Может есть резон сразу писать на Си или чем ином, для экономии не только ресурсов но и времени? А что будет - PHP или ASP - уже не так важно.
     
     
  • 2.8, Gambler (ok), 00:06, 03/02/2010 [^] [ответить]    [к модератору]  
  • +/
    Если бы был нормальный компилируемый язык с GC, OO и нормальной работой со троками, то очень может быть, что на нем бы многие и писали.
     
     
  • 3.14, ffsdmad (ok), 00:39, 03/02/2010 [^] [ответить]    [к модератору]  
  • +/
    буквально ради этого начал разбирать с D
    там кстати открыли исходники родного компилятора, а gdc пока сливает
     
     
  • 4.55, Gambler (ok), 21:11, 03/02/2010 [^] [ответить]    [к модератору]  
  • +/
    >буквально ради этого начал разбирать с D
    >там кстати открыли исходники родного компилятора, а gdc пока сливает

    Я пока жду книги по D2. Выйдет - куплю, тоже начну разбираться.  

     
  • 3.32, Unixoid_потому_что_кривые_руки_писали_этот_модуль (ok), 10:50, 03/02/2010 [^] [ответить]    [к модератору]  
  • +1 +/
    Такой язык есть, это C++ :-)

    http://www.hpl.hp.com/personal/Hans_Boehm/gc/simple_example.html

    http://developers.sun.com/solaris/articles/libgc.html

     
  • 2.28, Чорная дипрессия 666 (?), 10:11, 03/02/2010 [^] [ответить]    [к модератору]  
  • –2 +/
    Тогда фейсбук был бы написан к 2100 году.
     
  • 2.45, тоже Аноним (?), 14:01, 03/02/2010 [^] [ответить]     [к модератору]  
  • +1 +/
    Можно сразу писать на Си Но потом вы выделите часто использующиеся функции в от... весь текст скрыт [показать]
     
     
  • 3.64, igor (??), 18:01, 04/02/2010 [^] [ответить]     [к модератору]  
  • +2 +/
    Интересная ситуация получается Автор пхп его разработал как раз для того чтобы ... весь текст скрыт [показать]
     
  • 1.9, Happy New Fear (?), 00:11, 03/02/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    php++ is alive.
     
  • 1.10, Аноним (-), 00:16, 03/02/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Очередной костыль.
    лучше бы нормальный fastcgi сделали - это решило бы проблему производительности для сложных проектов!
     
     
  • 2.25, pro100master (ok), 09:44, 03/02/2010 [^] [ответить]     [к модератору]  
  • –1 +/
    чем именно решило бы Убрать затраты на вызов - да, добавить оптимизатор gcc - н... весь текст скрыт [показать]
     
  • 2.48, Аноним (-), 14:16, 03/02/2010 [^] [ответить]     [к модератору]  
  • +/
    Чем FPM не устроил Бред Оверхед динамической типизации и интерпритации гораздо... весь текст скрыт [показать]
     
     
  • 3.62, Аноним (-), 13:48, 04/02/2010 [^] [ответить]     [к модератору]  
  • +/
    обработка запросов в php-fastcgi,mod-php,FPM принципиально ничем не отличаются ... весь текст скрыт [показать]
     
  • 2.70, User294 (ok), 00:10, 06/02/2010 [^] [ответить]    [к модератору]  
  • +/
    >Очередной костыль.
    >лучше бы нормальный fastcgi сделали - это решило бы проблему производительности для
    >сложных проектов!

    Хинт: сам PHP от этого быстрее не заработает...

     
  • 1.11, Аноним (-), 00:21, 03/02/2010 [ответить] [показать ветку] [···]     [к модератору]  
  • –1 +/
    Интерстно а в нем можно частично перегнать пхп проект в С чтобы например теже ... весь текст скрыт [показать]
     
  • 1.15, evgeny_t (ok), 00:46, 03/02/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    пц )))
    говорял я им использовать java )))
     
     
  • 2.17, Mna (??), 01:21, 03/02/2010 [^] [ответить]     [к модератору]  
  • –1 +/
    Да-да-да я обеими руками за создание High-Performance Java-to-C compiler, и o... весь текст скрыт [показать]
     
     
  • 3.19, Volodymyr Lisivka (?), 01:59, 03/02/2010 [^] [ответить]    [к модератору]  
  • –1 +/
    > Да-да-да! я обеими руками за создание High-Performance Java-to-C++ compiler, и open-source-ного! вот это было бы дело.

    А что с gcc (gcj - GNU Compiler for Java) или VMKit? Чем не подходят?

     
     
  • 4.65, Mna (??), 19:01, 04/02/2010 [^] [ответить]     [к модератору]  
  • +/
    gcj - на моих мелких тестах был втрое медленнее, чем оригинальная Sun-овская Jav... весь текст скрыт [показать]
     
     
  • 5.72, Карбофос (ok), 15:36, 07/02/2010 [^] [ответить]     [к модератору]  
  • +/
    pagefault обычно возникают при пересечении границ памяти чем корявее работа с д... весь текст скрыт [показать]
     
     
  • 6.73, Mna (??), 03:40, 08/02/2010 [^] [ответить]     [к модератору]  
  • +/
    Тестовая программка оформлена как берущая вход со stdin, и выдающая в stdout Кр... весь текст скрыт [показать]
     
     
  • 7.74, Карбофос (ok), 08:49, 08/02/2010 [^] [ответить]     [к модератору]  
  • +/
    чисто технически, если это большой екзешник, то и делает он много если работа с... весь текст скрыт [показать]
     
  • 3.20, evgeny_t (ok), 02:05, 03/02/2010 [^] [ответить]    [к модератору]  
  • –1 +/
    уже есть )
    http://www.excelsior-usa.com/jet.html

    только он не нужен )

     
     
  • 4.66, Mna (??), 19:08, 04/02/2010 [^] [ответить]     [к модератору]  
  • +/
    1 Есть коммерческий и с закрытыми исходниками Были б были открытые я бы кое-чт... весь текст скрыт [показать]
     
  • 3.30, Чорная дипрессия 666 (?), 10:15, 03/02/2010 [^] [ответить]     [к модератору]  
  • –1 +/
    Есть Pyrex и Cython, правда не в C , а в обычный си Опять же, никому не нужно ... весь текст скрыт [показать]
     
     
  • 4.67, Mna (??), 20:31, 04/02/2010 [^] [ответить]     [к модератору]  
  • +/
    Насколько я помню, в них обоих, в скомпилированной программе, все равно есть пит... весь текст скрыт [показать]
     
  • 1.18, аноним (?), 01:38, 03/02/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    >HipHop трансформирует код PHP скриптов в высоко оптимизированное представление на языке C++
    >принципиальное отсутствие поддержки некоторых PHP конструкций, таких как eval()

    другими словами, патчей для оригинальной реализации не дождёмся. ценность для индустрии ноль целых ноль десятых

     
     
  • 2.26, pro100master (ok), 09:46, 03/02/2010 [^] [ответить]     [к модератору]  
  • –1 +/
    вообще-то они сотрудничают с зенд-коре тим Так что полюбому не пустая трата вре... весь текст скрыт [показать]
     
  • 2.31, Чорная дипрессия 666 (?), 10:16, 03/02/2010 [^] [ответить]    [к модератору]  
  • –1 +/
    Патчей для оригинальной реализации? Так это метакомпилятор, это другое совсем. Это не JIT какой-нибудь чтобы его вделать в обычный пахапе и всё работало, но ускоренно.
     
     
  • 3.51, аноним (?), 18:54, 03/02/2010 [^] [ответить]     [к модератору]  
  • +/
    напомню фразу из статьи ... весь текст скрыт [показать]
     
  • 1.27, Below (ok), 10:05, 03/02/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    >По заявлению разработчиков использование HipHop позволяет уменьшить нагрузку на CPU примерно на 50%.

    Только вот ведь недавно говорили что на 80%)

     
     
  • 2.34, Aleksey (??), 12:10, 03/02/2010 [^] [ответить]    [к модератору]  
  • –1 +/
    50 тоже очень не мало. Тут я думаю все зависит от специфики оптимизированного кода.
     
     
  • 3.57, Below (ok), 22:31, 03/02/2010 [^] [ответить]    [к модератору]  
  • +/
    Дело не в том много или мало, а в том насколько достоверны данные, которые так быстро меняются
     
  • 1.35, Аноним (-), 12:58, 03/02/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Кому-нибудь удалось найти исходники? Очень очень хочеться посмотреть !!!
     
     
  • 2.36, be_nt_all (ok), 13:08, 03/02/2010 [^] [ответить]     [к модератору]  
  • –1 +/
    Их девять утра это по-ходу ближе к вечеру будет А github они уже зарегистрирова... весь текст скрыт [показать]
     
     
  • 3.37, Cobold (??), 13:20, 03/02/2010 [^] [ответить]     [к модератору]  
  • –1 +/
    Ага, я с Roadsend как-то полгода назад баловался, тестировал - в большинстве слу... весь текст скрыт [показать]
     
     
  • 4.41, be_nt_all (ok), 13:32, 03/02/2010 [^] [ответить]     [к модератору]  
  • –1 +/
    А ты как код гонял Если plain CGI против modphp - то результат ожидаемый А есл... весь текст скрыт [показать]
     
     
  • 5.46, Cobold (??), 14:12, 03/02/2010 [^] [ответить]     [к модератору]  
  • +/
    cli , несколько бенчмарков на типовые операции, циклом на 10000 проходов Я не х... весь текст скрыт [показать]
     
  • 5.47, Cobold (??), 14:15, 03/02/2010 [^] [ответить]     [к модератору]  
  • +1 +/
    если в сети покопаться можно аналогичные результаты найти, мне просто тогда убед... весь текст скрыт [показать]
     
  • 2.40, be_nt_all (ok), 13:29, 03/02/2010 [^] [ответить]     [к модератору]  
  • +1 +/
    upd Да, здесь де ссылок на существующие альтернативы не давали Исправляю оплош... весь текст скрыт [показать]
     
     
  • 3.43, be_nt_all (ok), 13:46, 03/02/2010 [^] [ответить]    [к модератору]  
  • +/
    upd. Точнее сам phс haskell код не использует, но использует некую bison подобную утилитку maketea, на нём написанную.
     
  • 1.38, Аноним (-), 13:21, 03/02/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • –3 +/
    вот интересно, зачем было придумывать себе трудности, а потом геройски их решать? может надо было выбрать что-нибудь другое, а не PHP?
     
     
  • 2.44, AlexGor (??), 13:54, 03/02/2010 [^] [ответить]     [к модератору]  
  • –1 +/
    да вы что, это же нужно думать перед тем, как начинать делать человекам в целом... весь текст скрыт [показать]
     
  • 2.49, szh (ok), 16:06, 03/02/2010 [^] [ответить]    [к модератору]  
  • +/
    > может надо было выбрать что-нибудь другое, а не PHP?

    им надо было выйти на рынок как можно быстрее а лучше еще быстрее чем можно, а не сделать красивый проект к 2015 году just for fun.

     
     
  • 3.50, AlexGor (??), 17:30, 03/02/2010 [^] [ответить]    [к модератору]  
  • +1 +/
    facebook начинался как студенческое поделие, отсюда и похапе. рынки тут не при чём совершенно.
     
     
  • 4.52, аноним (?), 18:58, 03/02/2010 [^] [ответить]    [к модератору]  
  • +/
    >facebook начинался как студенческое поделие

    даконечно. начинали как студенческий сайтег и через несколько лет отгрохали датацентр.
    сами в это верите?

    >отсюда и похапе

    нет блин, надо было писать на перле и всю жизнь ловить глупые баги

     
     
  • 5.60, AlexGor (??), 09:41, 04/02/2010 [^] [ответить]    [к модератору]  
  • +/
    >даконечно. начинали как студенческий сайтег и через несколько лет отгрохали датацентр.
    >сами в это верите?

    разумеется. рост социальной сети - вещь совершенно не прогнозируемая.

    >нет блин, надо было писать на перле и всю жизнь ловить глупые
    >баги

    не блин, надо было писать на java и c(++).


     
  • 2.53, Warhead Wardick (?), 19:33, 03/02/2010 [^] [ответить]    [к модератору]  
  • +/
    Оно бы да - надо. Да только что же поделаешь если кто то _уже_ написал код который делает то что нужно. Переписывать? Опять же - хорошо бы, да только вот кто оплатит банкет?

    Впрочем поживём увидим, если SugarCRM и Wordpress скомпилируют и оно заработает - тады ДА!
    О! Кстати тады уродам из Zend - капец! :)

     
  • 1.58, Аноним (-), 00:07, 04/02/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    4 февраля, ХипХопа никто не видел. На GitHub пусто.
     
     
  • 2.59, Diogene the Open Source programmer (?), 01:01, 04/02/2010 [^] [ответить]    [к модератору]  
  • +/
    >4 февраля, ХипХопа никто не видел. На GitHub пусто.

    У нас ещё 3-е :)

     
  • 1.63, Vaso Petrovich (?), 17:41, 04/02/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Поправьте новость, ничего они не открывали, не колумбы все же... Ведь скачать ничего нельзя, а значить это брехня....
     
  • 1.75, Аноним (-), 12:54, 08/02/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    8 февраля и опять ничего :)
     
     
  • 2.76, Mna (??), 03:15, 09/02/2010 [^] [ответить]    [к модератору]  
  • +/
    выпустили README:

    This is a placeholder file (это они об этом самом Readme.md) as we work towards releasing the HipHop source code. We really wanted to have it out by now, but have run into some build/compilation issues when removing certain Facebook-specific extensions.

    Within the next few days (and maybe even sooner) we'll release an initial copy of the source code<...>
    Want to know more, take a look at the [http://groups.google.com/group/hiphop-php-dev/browse_thread/thread/2babfd7c38 thread] on the developer list.

     
  • 1.77, Mna (??), 21:52, 20/02/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Наконец вчера открыли.

    лежит тут:
    http://github.com/facebook/hiphop-php

     

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


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