Комментарии 105
НЛО прилетело и опубликовало эту надпись здесь
Про тесты производительности кто-нибудь сможет рассказать?
+4
Добавил Оценку производительности
+3
А выложите сравнение вариантов вот такого теста
0
спасибо отличная статья! как раз чешутся руки попробовать…
-1
Может, перенести в PHP?
0
Поправьте пожалуйста ссылку на статью об установке на убунту (сейчас она выдает 404 ошибку).
Правильная ссылка — wiki.github.com/facebook/hiphop-php/building-and-installing-on-ubuntu-910
Правильная ссылка — wiki.github.com/facebook/hiphop-php/building-and-installing-on-ubuntu-910
0
Хм. А в чем смысл?
Может сразу тогда писать на C++?
Может сразу тогда писать на C++?
-5
Может, лучше сразу на асме? Всё равно потом компилируется :)
+3
Смысл в том что это уже написано на PHP и роект очень большой и надо его как то оптимизировать, на PHP писать быстро, а выстрелит стартап или нет — не всегда можно быть увереным. Так что лучше потратить меньше времени и быстрей на рынок выпустить нужный сервис, ну а если он станет такой мегапопулярный как facebook, ну тогда лучше скомпилить PHP, нежели взять и сесть переписывать все заного
+3
Разработка на PHP быстрее и экономически выгодно на начальном этапе.
При стартапе мало кто наймет хороших программистов и напишет масштабируемый код.
При стартапе мало кто наймет хороших программистов и напишет масштабируемый код.
0
а то и на ассемблере? ;-)
-2
+100500
-13
Проблема с программистами достигла такой стадии, когда нормальных программистов не набрать и на один проект? :)
-1
А где можно посмотреть список поддерживаемого синтаксиса?
+1
Если писать с нуля — то конечно да.
Но в случае с ФБ (как они писали) — у них миллионы строк кода и большая команда PHP-разработчиков, в их случае оправданнее перевести код из PHP в HPHP и продолжать дальше писать на привычном для них языке.
Вообще, если почитать тот же вики — они пишут, что в 99.99999% проектах, написанных на PHP переводить код в C++ необходимости нет.
Но в случае с ФБ (как они писали) — у них миллионы строк кода и большая команда PHP-разработчиков, в их случае оправданнее перевести код из PHP в HPHP и продолжать дальше писать на привычном для них языке.
Вообще, если почитать тот же вики — они пишут, что в 99.99999% проектах, написанных на PHP переводить код в C++ необходимости нет.
+1
прошу прошения, это ответ на комментарий выше.
0
Если вспомнить, как выглядят вычислительные мощности Facbook, но очень воодушевляет, как можно уменьшить это помещение с помощью простой компиляции :)
+5
Возможно глупый вопрос, не судите строго. Но поможет ли это ускорить wordpress?
+1
Проект только на начальной стадии. Когда выйдет первый релиз, тогда уже можно будет говорить…
0
Вполне возможно, однако компилировать такой большой проект может быть несколько проблематично.
0
Вовсе нет, в вики есть пример компиляции — wiki.github.com/facebook/hiphop-php/running-hiphop
0
Тогда это здорово :) Просто как показывает практика — чем больше проект, тем больше вероятность использования в нем каких-то хаков, а они, соответственно плохо компилируются. Собственно, Вордпресс, не исключение:
Please note, we identified 2 or 3 problems with WordPress that need to be fixed before HipHop can compile it.
0
Да и не только wordpress. Всяки Invision'ы тое было бы хорошо ускорить (хотя в них часто проблема не в РНР, а в запросах к базе, которые длятся по 3-4 секунды 0_О)
0
В них нынче проблема в том, что этих запросов из коробки может быть 20, а писать плагины с ещё дюжиной запросов на страницу становится нормальным явлением :(
+1
Наверное, скоро откроется новая эра — веб-разработка на компилириуемых языках. Как щас представляю себе невообразимо быстрое RoR приложение… :-)
0
Новая эра не откроется, компилируемые языки уже давно в вебе :)
+6
Я имел ввиду, что они заменят своих интерпретируемых братьев. :-)
0
Не заменят. У каждого подхода свои преимущества. Переписывание узких мест в крупных проектах на Си/С++ — довольно типичная практика. Facebook же продемострировал как они решают эту проблему и их подход очень интересен в первую очередь уменьшением трудозатрат.
С другой строны большинству обычных проектов вполне достаточно какого-нибудь eAccellerator'а для ускорения производительности или они вообще не испытывают проблем с произодительностью. В таких проектах гораздо больше интересна портируемость, которую дают интерпретируемые языки, чем скорость работы.
С другой строны большинству обычных проектов вполне достаточно какого-нибудь eAccellerator'а для ускорения производительности или они вообще не испытывают проблем с произодительностью. В таких проектах гораздо больше интересна портируемость, которую дают интерпретируемые языки, чем скорость работы.
0
Не заменят, а вот обратная ситуация как раз налицо
+3
Да, возможно даже, появятся (или уже появились и я просто этого не знаю?) технологии аппаратной интерпретации языков высокого уровня. Как появились технологии аппаратной виртуализации. Тогда компилирование станет нужным лишь в редких случаях.
+1
Существуют трансляторы интерпретируемых языков в байт-код или сразу машинный.
Существуют Java и FORTH процессоры.
Существуют Java и FORTH процессоры.
0
Сама по себе аппаратная интерпретация мало что дает, если семантика языка остается динамической. Хорошие «интерпретаторы», вроде V8 и LuaJIT 2, все равно требуют сложного анализа в процессе выполнения и замены динамических конструкций на статические.
0
зачем? Это неэффективно. Сейчас очень активно развивается компиляция в байткод LLVM, а он уже компилируется в нативный код
0
VM + JIT куда более привлекательны. По крайней мере Python & Ruby идут в этом направлении.
+1
Вот и придумали нормальное название танцам с бубнами
+18
Объясните точнее:
Получается что запущенный сервер в 2 раза медленнее или что?
Напишите в статье выводы.
$ time php test.phpОтсюда я понял что г++ быстрее, но тут:
real 0m32.308s
$ g++ test.cpp
real 0m1.758s
$ ab -n 1000 -c 5 127.0.0.1:8080/test.php
Time taken for tests: 67.019 seconds
$ ab -n 1000 -c 5 127.0.0.1:80/test.php
Time taken for tests: 27.180 seconds
Получается что запущенный сервер в 2 раза медленнее или что?
Напишите в статье выводы.
+11
Нет, там была компилсяция полученого cpp файла, а потом запуск бинарика.
$ g++ test.cpp
$ time ./a.out
answer: 39
А так действительно странно, во всех тестах показатели у HipHop получаются хуже.
$ g++ test.cpp
$ time ./a.out
answer: 39
А так действительно странно, во всех тестах показатели у HipHop получаются хуже.
0
$ ab -n 1000 -c 5 127.0.0.1:8080/test.php
это запуск скомпилированного с помощью HipHop приложения в виде веб-сервиса
$ ab -n 1000 -c 5 127.0.0.1:80/test.php
это стандартный PHP, запущенный на Apache with modphp
Выводы добавил…
это запуск скомпилированного с помощью HipHop приложения в виде веб-сервиса
$ ab -n 1000 -c 5 127.0.0.1:80/test.php
это стандартный PHP, запущенный на Apache with modphp
Выводы добавил…
-1
А как оно работает с zend_autoloader и т.п.?
0
Может и не совсем в тему, но напомнило:
Теперь будет Hip-Hop на PHP :)
15.07.2008 17:12:36, Micktu
у меня рэп в коде
15.07.2008 17:12:55, Micktu
pic div fade in slow
shadow current menu show
find content replace all span
div append to table row
15.07.2008 17:13:06, Se7en
хехе
Теперь будет Hip-Hop на PHP :)
+8
Break Dance на Ruby on Ralis coming soon…
+9
Тесты абсолютно глупые. Какой смысл миллиард раз перемножать числа, когда в вебе используются совсем другие операции?
Только запуск и подключение файлов в php занимают несколько мс, у программы в режиме сервиса такого оверхеда не будет. Кроме того, можно не пересоздавать все объекты при каждом запуске, а повторно их использовать, что дает хороший прирост производительности.
Только запуск и подключение файлов в php занимают несколько мс, у программы в режиме сервиса такого оверхеда не будет. Кроме того, можно не пересоздавать все объекты при каждом запуске, а повторно их использовать, что дает хороший прирост производительности.
+9
> Тесты абсолютно глупые
Возможно. Это первое что пришло в голову. Но даже эти глупые тесты о многом говорят.
HipHop до g++ еще очень далеко.
Буду рад, если покажут примеры нормальных тестов.
Возможно. Это первое что пришло в голову. Но даже эти глупые тесты о многом говорят.
HipHop до g++ еще очень далеко.
Буду рад, если покажут примеры нормальных тестов.
-4
> Буду рад, если покажут примеры нормальных тестов.
Создание вcяких объектов типа контроллеров и моделек, обработка и вывод HTML-шаблона. Валидация форм.
Я сравнивал PHP, запущенный в обычном режиме (с Апачем), и написанный на PHP сервер, который сам обрабатывает запросы, не перезапускаясь на каждом запросе и не пересоздавая объекты/инклюдя файлы, разница получилась по моему раза в 4-5 на выводе странички с формой.
Создание вcяких объектов типа контроллеров и моделек, обработка и вывод HTML-шаблона. Валидация форм.
Я сравнивал PHP, запущенный в обычном режиме (с Апачем), и написанный на PHP сервер, который сам обрабатывает запросы, не перезапускаясь на каждом запросе и не пересоздавая объекты/инклюдя файлы, разница получилась по моему раза в 4-5 на выводе странички с формой.
+2
О, супер.
Можете рассказать, откуда копать в эту сторону?
Какие подводные камни?
Спасибо.
Можете рассказать, откуда копать в эту сторону?
Какие подводные камни?
Спасибо.
0
Рассказать-то я могу, а про что именно?)) Про создание моделек или про создание сервера на PHP?
0
Про сервер, как реализовывали, напрямую запросы парсили?
0
Сервер сделал простейший, исключительно для тестов, он обрабатывал только GET-запросы (COOKIES и POST парсить было немного лень :), да и для парсинга GET'а есть встроеннная функция ), работал с использованием select(), принимал запросы, как только запрос собирался целиком, он отдавал его на обработку, ответ клался в буфер и тоже асинхронно отдавался.
Я заметил, что приличную часть обработки запроса в традиционной схеме занимает запуск интерпретатора PHP и инклюдинг файлов, создание нужных классов (кстати, банальное склеивание php-файлов в один может удвоить производительность). А при такой схеме, с сервером, получается хорошая экономия.
Апач на 2 ядрах обрабатывал где-то 130 запр/сек, сервер PHP работал только на одном ядре и обрабатывал 300 запр/сек. Специально, кстати проверял, ходят слухи, мол у PHP течет память — у меня утечек не наблюдалось.
Сейчас в общем-то пришла в голову мысль, что незачем делать всю это возню с select'ами, проще сделать сервер, который обрабатывает только одно соединение за раз, создать несколько таких и поставить за nginx например.
Я заметил, что приличную часть обработки запроса в традиционной схеме занимает запуск интерпретатора PHP и инклюдинг файлов, создание нужных классов (кстати, банальное склеивание php-файлов в один может удвоить производительность). А при такой схеме, с сервером, получается хорошая экономия.
Апач на 2 ядрах обрабатывал где-то 130 запр/сек, сервер PHP работал только на одном ядре и обрабатывал 300 запр/сек. Специально, кстати проверял, ходят слухи, мол у PHP течет память — у меня утечек не наблюдалось.
Сейчас в общем-то пришла в голову мысль, что незачем делать всю это возню с select'ами, проще сделать сервер, который обрабатывает только одно соединение за раз, создать несколько таких и поставить за nginx например.
0
А с чего ему быть не далеко от gcc ??? От того что он транслируется в сишный код не следует то что он этот самый сишный код способен догнать.
+1
НЛО прилетело и опубликовало эту надпись здесь
Читайте название, там так и написано «сборка и запуск» :)
+2
НЛО прилетело и опубликовало эту надпись здесь
Все просто позавидовали вашей интеллектуальности.
+2
Нет, просто this is how it works :) Согласные плюсуют хсилу и идут себе дальше, несогласные брызжа слюной, лезут в профиль, минусуют карму, проклинают вас, делают куклу вуду с вашим именем и сжигают её, затем записывают ваше имя в блокнотик, и минусуют все ваши комментарии. Знаем, проходили :)
Просто такова натура человека.
Просто такова натура человека.
+6
Шо вы все паритесь. Ведь добавили кнопку RESET ептить)) Будет шо написать хуяк нажал и запостил статью. А пока пиши комменты не задрачиваясь на всю эту приблуду с +- и кармой ))
-1
А кто сказал что я парюсь? :) Я просто разъяснил человеку некоторые аспекты пребывания на Хабре ;) А Reset использовать не буду пока-что, во-первых потому что писать статьи не собираюсь, во-вторых теперь мне плевать если у кого-нибудь мой коммент вызовет анальные колики и могу писать что взбредёт в голову :)
хуйпизда
хуйпизда
-1
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Такие вещи, конечно, прикольные — позволяют ускорять проект в несколько раз, но… Facebook — это многомиллионные аудитории пользователей каждый день, им-то оно надо, а вот обычным владельцам сайтов, думаю, что не очень. Проще доплатить за аренду более крутого сервера, чем разбираться с этим. По крайней мере пока.
+1
а можно будет под винду поставить?
0
Зато теперь можно писать объявления вроде «допилю ваш php-код на с++». irony
+4
жду psychedelic-php (%
-1
Помесь негра с мотоциклом
0
НЛО прилетело и опубликовало эту надпись здесь
Когда у тебя будет 20k серверов а зловещь сократит их до 10k, тогда и поговорим
+3
НЛО прилетело и опубликовало эту надпись здесь
вы очень умны и у вас очень много серверов. а в Фейсбуке действительно дураки сидят с виртуальным хостингом (дорогим, за 27 баксов и 15 центов в месяц). потому вы юзаете С++/ Lua / Python, а дураки из фейсбука пишут на ПХП и используют Хип-Хоп. Думаю, вам стоит накатать им емейл и открыть глаза, что они поступают неправильно.
0
НЛО прилетело и опубликовало эту надпись здесь
Вы — лузер. Создатели фейбука — не лузеры. Их проект успешен что в плане популярности, что в плане доходов, что в плане влияния на интернет и его будущее (может быть успешный проект, но незначительно влияющий на историю развития).
Вы заявили:
И вы соврали. Потому что у фейсбука over 9000 серверов и они используют PHP, а не С++/ Lua / Python.
Вы заявили:
Тем более человек имеющий 20к серверов никогда в жизни не будет юзать ПХП. Зачем оно там? Там будет стоять С++/ Lua / Python или что то в этом духе.
И вы соврали. Потому что у фейсбука over 9000 серверов и они используют PHP, а не С++/ Lua / Python.
-1
и да, жалеть меня не надо. я считаю себя более успешным, чем 95% моих одногодок. По каким показателям я сужу — не спрашивайте, это моя личная внутренняя оценка
0
Что с тобой случилось?
Дрожит рука и трудно говорить,
Бежит слеза, а сердце все горит,
Болит душа, но чувства притупились.
Смешно, но я не знаю, что с тобой случилось.
:(
Дрожит рука и трудно говорить,
Бежит слеза, а сердце все горит,
Болит душа, но чувства притупились.
Смешно, но я не знаю, что с тобой случилось.
:(
0
Лёд тронулся. давно зреет идея написать большой svn хук, который оптимизировал бы коды, сливал статику, типа css|js в один файл итд итп.
Всё идет к тому, что языки высокого уровня теснят языки низкого уровня и ручную оптимизацию. Неужели золотое правило «Машинное время дешевле человеческого» когда-нибудь станет аксиомой?
Всё идет к тому, что языки высокого уровня теснят языки низкого уровня и ручную оптимизацию. Неужели золотое правило «Машинное время дешевле человеческого» когда-нибудь станет аксиомой?
0
Интересно было бы в взять какой-нибудь реальный проект на популярном движке (например ZF) и посмотреть, как будут выглядеть результаты нагрузочного тестирования «до» и «после». Хотя, как я понял, пока даже Wodpress скомпилить не получается :(
0
Тесты php проводились с использованием APC или на чистом php? Если на чистом — то смысла в таких тестах нет, почти никто в здравом уме не использует php без таких вещей.
Поэтому большая просьба — провести все тесты отдельно с APC.
Поэтому большая просьба — провести все тесты отдельно с APC.
0
неоходимые
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Сборка и запуск HipHop-PHP