Comments 105
Про тесты производительности кто-нибудь сможет рассказать?
Добавил Оценку производительности
А выложите сравнение вариантов вот такого теста
спасибо отличная статья! как раз чешутся руки попробовать…
Может, перенести в PHP?
Поправьте пожалуйста ссылку на статью об установке на убунту (сейчас она выдает 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
Хм. А в чем смысл?
Может сразу тогда писать на C++?
Может сразу тогда писать на C++?
Может, лучше сразу на асме? Всё равно потом компилируется :)
Смысл в том что это уже написано на PHP и роект очень большой и надо его как то оптимизировать, на PHP писать быстро, а выстрелит стартап или нет — не всегда можно быть увереным. Так что лучше потратить меньше времени и быстрей на рынок выпустить нужный сервис, ну а если он станет такой мегапопулярный как facebook, ну тогда лучше скомпилить PHP, нежели взять и сесть переписывать все заного
Разработка на PHP быстрее и экономически выгодно на начальном этапе.
При стартапе мало кто наймет хороших программистов и напишет масштабируемый код.
При стартапе мало кто наймет хороших программистов и напишет масштабируемый код.
а то и на ассемблере? ;-)
+100500
Проблема с программистами достигла такой стадии, когда нормальных программистов не набрать и на один проект? :)
А где можно посмотреть список поддерживаемого синтаксиса?
Если писать с нуля — то конечно да.
Но в случае с ФБ (как они писали) — у них миллионы строк кода и большая команда PHP-разработчиков, в их случае оправданнее перевести код из PHP в HPHP и продолжать дальше писать на привычном для них языке.
Вообще, если почитать тот же вики — они пишут, что в 99.99999% проектах, написанных на PHP переводить код в C++ необходимости нет.
Но в случае с ФБ (как они писали) — у них миллионы строк кода и большая команда PHP-разработчиков, в их случае оправданнее перевести код из PHP в HPHP и продолжать дальше писать на привычном для них языке.
Вообще, если почитать тот же вики — они пишут, что в 99.99999% проектах, написанных на PHP переводить код в C++ необходимости нет.
прошу прошения, это ответ на комментарий выше.
Если вспомнить, как выглядят вычислительные мощности Facbook, но очень воодушевляет, как можно уменьшить это помещение с помощью простой компиляции :)


Возможно глупый вопрос, не судите строго. Но поможет ли это ускорить wordpress?
Проект только на начальной стадии. Когда выйдет первый релиз, тогда уже можно будет говорить…
Вполне возможно, однако компилировать такой большой проект может быть несколько проблематично.
Вовсе нет, в вики есть пример компиляции — wiki.github.com/facebook/hiphop-php/running-hiphop
Тогда это здорово :) Просто как показывает практика — чем больше проект, тем больше вероятность использования в нем каких-то хаков, а они, соответственно плохо компилируются. Собственно, Вордпресс, не исключение:
Please note, we identified 2 or 3 problems with WordPress that need to be fixed before HipHop can compile it.
Да и не только wordpress. Всяки Invision'ы тое было бы хорошо ускорить (хотя в них часто проблема не в РНР, а в запросах к базе, которые длятся по 3-4 секунды 0_О)
В них нынче проблема в том, что этих запросов из коробки может быть 20, а писать плагины с ещё дюжиной запросов на страницу становится нормальным явлением :(
Наверное, скоро откроется новая эра — веб-разработка на компилириуемых языках. Как щас представляю себе невообразимо быстрое RoR приложение… :-)
Новая эра не откроется, компилируемые языки уже давно в вебе :)
Я имел ввиду, что они заменят своих интерпретируемых братьев. :-)
Не заменят. У каждого подхода свои преимущества. Переписывание узких мест в крупных проектах на Си/С++ — довольно типичная практика. Facebook же продемострировал как они решают эту проблему и их подход очень интересен в первую очередь уменьшением трудозатрат.
С другой строны большинству обычных проектов вполне достаточно какого-нибудь eAccellerator'а для ускорения производительности или они вообще не испытывают проблем с произодительностью. В таких проектах гораздо больше интересна портируемость, которую дают интерпретируемые языки, чем скорость работы.
С другой строны большинству обычных проектов вполне достаточно какого-нибудь eAccellerator'а для ускорения производительности или они вообще не испытывают проблем с произодительностью. В таких проектах гораздо больше интересна портируемость, которую дают интерпретируемые языки, чем скорость работы.
Не заменят, а вот обратная ситуация как раз налицо
Да, возможно даже, появятся (или уже появились и я просто этого не знаю?) технологии аппаратной интерпретации языков высокого уровня. Как появились технологии аппаратной виртуализации. Тогда компилирование станет нужным лишь в редких случаях.
Существуют трансляторы интерпретируемых языков в байт-код или сразу машинный.
Существуют Java и FORTH процессоры.
Существуют Java и FORTH процессоры.
Сама по себе аппаратная интерпретация мало что дает, если семантика языка остается динамической. Хорошие «интерпретаторы», вроде V8 и LuaJIT 2, все равно требуют сложного анализа в процессе выполнения и замены динамических конструкций на статические.
зачем? Это неэффективно. Сейчас очень активно развивается компиляция в байткод LLVM, а он уже компилируется в нативный код
VM + JIT куда более привлекательны. По крайней мере Python & Ruby идут в этом направлении.
Вот и придумали нормальное название танцам с бубнами
Объясните точнее:
Получается что запущенный сервер в 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 раза медленнее или что?
Напишите в статье выводы.
Нет, там была компилсяция полученого cpp файла, а потом запуск бинарика.
$ g++ test.cpp
$ time ./a.out
answer: 39
А так действительно странно, во всех тестах показатели у HipHop получаются хуже.
$ g++ test.cpp
$ time ./a.out
answer: 39
А так действительно странно, во всех тестах показатели у HipHop получаются хуже.
$ 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
Выводы добавил…
А как оно работает с zend_autoloader и т.п.?
Может и не совсем в тему, но напомнило:
Теперь будет 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 :)
Break Dance на Ruby on Ralis coming soon…
Тесты абсолютно глупые. Какой смысл миллиард раз перемножать числа, когда в вебе используются совсем другие операции?
Только запуск и подключение файлов в php занимают несколько мс, у программы в режиме сервиса такого оверхеда не будет. Кроме того, можно не пересоздавать все объекты при каждом запуске, а повторно их использовать, что дает хороший прирост производительности.
Только запуск и подключение файлов в php занимают несколько мс, у программы в режиме сервиса такого оверхеда не будет. Кроме того, можно не пересоздавать все объекты при каждом запуске, а повторно их использовать, что дает хороший прирост производительности.
> Тесты абсолютно глупые
Возможно. Это первое что пришло в голову. Но даже эти глупые тесты о многом говорят.
HipHop до g++ еще очень далеко.
Буду рад, если покажут примеры нормальных тестов.
Возможно. Это первое что пришло в голову. Но даже эти глупые тесты о многом говорят.
HipHop до g++ еще очень далеко.
Буду рад, если покажут примеры нормальных тестов.
> Буду рад, если покажут примеры нормальных тестов.
Создание вcяких объектов типа контроллеров и моделек, обработка и вывод HTML-шаблона. Валидация форм.
Я сравнивал PHP, запущенный в обычном режиме (с Апачем), и написанный на PHP сервер, который сам обрабатывает запросы, не перезапускаясь на каждом запросе и не пересоздавая объекты/инклюдя файлы, разница получилась по моему раза в 4-5 на выводе странички с формой.
Создание вcяких объектов типа контроллеров и моделек, обработка и вывод HTML-шаблона. Валидация форм.
Я сравнивал PHP, запущенный в обычном режиме (с Апачем), и написанный на PHP сервер, который сам обрабатывает запросы, не перезапускаясь на каждом запросе и не пересоздавая объекты/инклюдя файлы, разница получилась по моему раза в 4-5 на выводе странички с формой.
О, супер.
Можете рассказать, откуда копать в эту сторону?
Какие подводные камни?
Спасибо.
Можете рассказать, откуда копать в эту сторону?
Какие подводные камни?
Спасибо.
Рассказать-то я могу, а про что именно?)) Про создание моделек или про создание сервера на PHP?
Про сервер, как реализовывали, напрямую запросы парсили?
Сервер сделал простейший, исключительно для тестов, он обрабатывал только GET-запросы (COOKIES и POST парсить было немного лень :), да и для парсинга GET'а есть встроеннная функция ), работал с использованием select(), принимал запросы, как только запрос собирался целиком, он отдавал его на обработку, ответ клался в буфер и тоже асинхронно отдавался.
Я заметил, что приличную часть обработки запроса в традиционной схеме занимает запуск интерпретатора PHP и инклюдинг файлов, создание нужных классов (кстати, банальное склеивание php-файлов в один может удвоить производительность). А при такой схеме, с сервером, получается хорошая экономия.
Апач на 2 ядрах обрабатывал где-то 130 запр/сек, сервер PHP работал только на одном ядре и обрабатывал 300 запр/сек. Специально, кстати проверял, ходят слухи, мол у PHP течет память — у меня утечек не наблюдалось.
Сейчас в общем-то пришла в голову мысль, что незачем делать всю это возню с select'ами, проще сделать сервер, который обрабатывает только одно соединение за раз, создать несколько таких и поставить за nginx например.
Я заметил, что приличную часть обработки запроса в традиционной схеме занимает запуск интерпретатора PHP и инклюдинг файлов, создание нужных классов (кстати, банальное склеивание php-файлов в один может удвоить производительность). А при такой схеме, с сервером, получается хорошая экономия.
Апач на 2 ядрах обрабатывал где-то 130 запр/сек, сервер PHP работал только на одном ядре и обрабатывал 300 запр/сек. Специально, кстати проверял, ходят слухи, мол у PHP течет память — у меня утечек не наблюдалось.
Сейчас в общем-то пришла в голову мысль, что незачем делать всю это возню с select'ами, проще сделать сервер, который обрабатывает только одно соединение за раз, создать несколько таких и поставить за nginx например.
А с чего ему быть не далеко от gcc ??? От того что он транслируется в сишный код не следует то что он этот самый сишный код способен догнать.
Читайте название, там так и написано «сборка и запуск» :)
Все просто позавидовали вашей интеллектуальности.
Нет, просто this is how it works :) Согласные плюсуют хсилу и идут себе дальше, несогласные брызжа слюной, лезут в профиль, минусуют карму, проклинают вас, делают куклу вуду с вашим именем и сжигают её, затем записывают ваше имя в блокнотик, и минусуют все ваши комментарии. Знаем, проходили :)
Просто такова натура человека.
Просто такова натура человека.
Шо вы все паритесь. Ведь добавили кнопку RESET ептить)) Будет шо написать хуяк нажал и запостил статью. А пока пиши комменты не задрачиваясь на всю эту приблуду с +- и кармой ))
А кто сказал что я парюсь? :) Я просто разъяснил человеку некоторые аспекты пребывания на Хабре ;) А Reset использовать не буду пока-что, во-первых потому что писать статьи не собираюсь, во-вторых теперь мне плевать если у кого-нибудь мой коммент вызовет анальные колики и могу писать что взбредёт в голову :)
хуйпизда
хуйпизда
Такие вещи, конечно, прикольные — позволяют ускорять проект в несколько раз, но… Facebook — это многомиллионные аудитории пользователей каждый день, им-то оно надо, а вот обычным владельцам сайтов, думаю, что не очень. Проще доплатить за аренду более крутого сервера, чем разбираться с этим. По крайней мере пока.
а можно будет под винду поставить?
Зато теперь можно писать объявления вроде «допилю ваш php-код на с++». irony
жду psychedelic-php (%
Помесь негра с мотоциклом
Когда у тебя будет 20k серверов а зловещь сократит их до 10k, тогда и поговорим
вы очень умны и у вас очень много серверов. а в Фейсбуке действительно дураки сидят с виртуальным хостингом (дорогим, за 27 баксов и 15 центов в месяц). потому вы юзаете С++/ Lua / Python, а дураки из фейсбука пишут на ПХП и используют Хип-Хоп. Думаю, вам стоит накатать им емейл и открыть глаза, что они поступают неправильно.
Вы — лузер. Создатели фейбука — не лузеры. Их проект успешен что в плане популярности, что в плане доходов, что в плане влияния на интернет и его будущее (может быть успешный проект, но незначительно влияющий на историю развития).
Вы заявили:
И вы соврали. Потому что у фейсбука over 9000 серверов и они используют PHP, а не С++/ Lua / Python.
Вы заявили:
Тем более человек имеющий 20к серверов никогда в жизни не будет юзать ПХП. Зачем оно там? Там будет стоять С++/ Lua / Python или что то в этом духе.
И вы соврали. Потому что у фейсбука over 9000 серверов и они используют PHP, а не С++/ Lua / Python.
и да, жалеть меня не надо. я считаю себя более успешным, чем 95% моих одногодок. По каким показателям я сужу — не спрашивайте, это моя личная внутренняя оценка
Что с тобой случилось?
Дрожит рука и трудно говорить,
Бежит слеза, а сердце все горит,
Болит душа, но чувства притупились.
Смешно, но я не знаю, что с тобой случилось.
:(
Дрожит рука и трудно говорить,
Бежит слеза, а сердце все горит,
Болит душа, но чувства притупились.
Смешно, но я не знаю, что с тобой случилось.
:(
Лёд тронулся. давно зреет идея написать большой svn хук, который оптимизировал бы коды, сливал статику, типа css|js в один файл итд итп.
Всё идет к тому, что языки высокого уровня теснят языки низкого уровня и ручную оптимизацию. Неужели золотое правило «Машинное время дешевле человеческого» когда-нибудь станет аксиомой?
Всё идет к тому, что языки высокого уровня теснят языки низкого уровня и ручную оптимизацию. Неужели золотое правило «Машинное время дешевле человеческого» когда-нибудь станет аксиомой?
Интересно было бы в взять какой-нибудь реальный проект на популярном движке (например ZF) и посмотреть, как будут выглядеть результаты нагрузочного тестирования «до» и «после». Хотя, как я понял, пока даже Wodpress скомпилить не получается :(
Тесты php проводились с использованием APC или на чистом php? Если на чистом — то смысла в таких тестах нет, почти никто в здравом уме не использует php без таких вещей.
Поэтому большая просьба — провести все тесты отдельно с APC.
Поэтому большая просьба — провести все тесты отдельно с APC.
неоходимые
Sign up to leave a comment.
Сборка и запуск HipHop-PHP