Как стать автором
Обновить

Комментарии 105

НЛО прилетело и опубликовало эту надпись здесь
Да, var_dump и print_r работают. Во всяком случае var_dump($_GET);
НЛО прилетело и опубликовало эту надпись здесь
Про тесты производительности кто-нибудь сможет рассказать?
Добавил Оценку производительности
А выложите сравнение вариантов вот такого теста
HipHop — 0.18
PHP (5.2.12) — 3.08
C++ (gcc 4.4.3) — 0.5
Python (2.51) — 2.35
Спасибо
С++ озадачен :\
Си показывает обычно сотые секунды, может опечатка в 0,5 у С++?
ой, извините 0,05
для большей объективности можно добавить psyco для python
спасибо отличная статья! как раз чешутся руки попробовать…
Может, перенести в PHP?
Пока кармы не хватает…
теперь должно хватить ;)
НЛО прилетело и опубликовало эту надпись здесь
Исправили.
Спасибо, исправил
Хм. А в чем смысл?
Может сразу тогда писать на C++?
Может, лучше сразу на асме? Всё равно потом компилируется :)
Смысл в том что это уже написано на PHP и роект очень большой и надо его как то оптимизировать, на PHP писать быстро, а выстрелит стартап или нет — не всегда можно быть увереным. Так что лучше потратить меньше времени и быстрей на рынок выпустить нужный сервис, ну а если он станет такой мегапопулярный как facebook, ну тогда лучше скомпилить PHP, нежели взять и сесть переписывать все заного
Разработка на PHP быстрее и экономически выгодно на начальном этапе.
При стартапе мало кто наймет хороших программистов и напишет масштабируемый код.
а то и на ассемблере? ;-)
+100500
-10!
Проблема с программистами достигла такой стадии, когда нормальных программистов не набрать и на один проект? :)
нормальные программисты — это программисты, пишущие на с++?
Это программисты, которые могут писать и на c++.
А где можно посмотреть список поддерживаемого синтаксиса?
Если писать с нуля — то конечно да.

Но в случае с ФБ (как они писали) — у них миллионы строк кода и большая команда PHP-разработчиков, в их случае оправданнее перевести код из PHP в HPHP и продолжать дальше писать на привычном для них языке.

Вообще, если почитать тот же вики — они пишут, что в 99.99999% проектах, написанных на PHP переводить код в C++ необходимости нет.
прошу прошения, это ответ на комментарий выше.
Если вспомнить, как выглядят вычислительные мощности Facbook, но очень воодушевляет, как можно уменьшить это помещение с помощью простой компиляции :)

Возможно глупый вопрос, не судите строго. Но поможет ли это ускорить wordpress?
Проект только на начальной стадии. Когда выйдет первый релиз, тогда уже можно будет говорить…
Вполне возможно, однако компилировать такой большой проект может быть несколько проблематично.
Тогда это здорово :) Просто как показывает практика — чем больше проект, тем больше вероятность использования в нем каких-то хаков, а они, соответственно плохо компилируются. Собственно, Вордпресс, не исключение:
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, а писать плагины с ещё дюжиной запросов на страницу становится нормальным явлением :(
Не в количестве запросов дело, если сделать запрос с 3 JOIN`ами он по скорости будет часто такой же как 3 небольших а то и вовсе медленнее.
Мне это понятно. Просто вопрос идёт об одном конкретном продукте, где общий вектор развития несколько расходится с понятием быстрого приложения :)
Наверное, скоро откроется новая эра — веб-разработка на компилириуемых языках. Как щас представляю себе невообразимо быстрое RoR приложение… :-)
Новая эра не откроется, компилируемые языки уже давно в вебе :)
Я имел ввиду, что они заменят своих интерпретируемых братьев. :-)
Не заменят. У каждого подхода свои преимущества. Переписывание узких мест в крупных проектах на Си/С++ — довольно типичная практика. Facebook же продемострировал как они решают эту проблему и их подход очень интересен в первую очередь уменьшением трудозатрат.
С другой строны большинству обычных проектов вполне достаточно какого-нибудь eAccellerator'а для ускорения производительности или они вообще не испытывают проблем с произодительностью. В таких проектах гораздо больше интересна портируемость, которую дают интерпретируемые языки, чем скорость работы.
Не заменят, а вот обратная ситуация как раз налицо
Да, возможно даже, появятся (или уже появились и я просто этого не знаю?) технологии аппаратной интерпретации языков высокого уровня. Как появились технологии аппаратной виртуализации. Тогда компилирование станет нужным лишь в редких случаях.
Существуют трансляторы интерпретируемых языков в байт-код или сразу машинный.
Существуют Java и FORTH процессоры.
Сама по себе аппаратная интерпретация мало что дает, если семантика языка остается динамической. Хорошие «интерпретаторы», вроде V8 и LuaJIT 2, все равно требуют сложного анализа в процессе выполнения и замены динамических конструкций на статические.
Будем надеяться, что в этом направлении системщики что-нибудь еще изобретут и будет повсеместный «code sugar». :-)
зачем? Это неэффективно. Сейчас очень активно развивается компиляция в байткод LLVM, а он уже компилируется в нативный код
VM + JIT куда более привлекательны. По крайней мере Python & Ruby идут в этом направлении.
Вот и придумали нормальное название танцам с бубнами
Объясните точнее:

$ 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 получаются хуже.
$ 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

Выводы добавил…
А как оно работает с zend_autoloader и т.п.?
Может и не совсем в тему, но напомнило:

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 занимают несколько мс, у программы в режиме сервиса такого оверхеда не будет. Кроме того, можно не пересоздавать все объекты при каждом запуске, а повторно их использовать, что дает хороший прирост производительности.

> Тесты абсолютно глупые
Возможно. Это первое что пришло в голову. Но даже эти глупые тесты о многом говорят.
HipHop до g++ еще очень далеко.

Буду рад, если покажут примеры нормальных тестов.
> Буду рад, если покажут примеры нормальных тестов.

Создание вcяких объектов типа контроллеров и моделек, обработка и вывод HTML-шаблона. Валидация форм.

Я сравнивал PHP, запущенный в обычном режиме (с Апачем), и написанный на PHP сервер, который сам обрабатывает запросы, не перезапускаясь на каждом запросе и не пересоздавая объекты/инклюдя файлы, разница получилась по моему раза в 4-5 на выводе странички с формой.
О, супер.
Можете рассказать, откуда копать в эту сторону?
Какие подводные камни?

Спасибо.
Рассказать-то я могу, а про что именно?)) Про создание моделек или про создание сервера на PHP?
Про сервер, как реализовывали, напрямую запросы парсили?
Сервер сделал простейший, исключительно для тестов, он обрабатывал только GET-запросы (COOKIES и POST парсить было немного лень :), да и для парсинга GET'а есть встроеннная функция ), работал с использованием select(), принимал запросы, как только запрос собирался целиком, он отдавал его на обработку, ответ клался в буфер и тоже асинхронно отдавался.

Я заметил, что приличную часть обработки запроса в традиционной схеме занимает запуск интерпретатора PHP и инклюдинг файлов, создание нужных классов (кстати, банальное склеивание php-файлов в один может удвоить производительность). А при такой схеме, с сервером, получается хорошая экономия.

Апач на 2 ядрах обрабатывал где-то 130 запр/сек, сервер PHP работал только на одном ядре и обрабатывал 300 запр/сек. Специально, кстати проверял, ходят слухи, мол у PHP течет память — у меня утечек не наблюдалось.

Сейчас в общем-то пришла в голову мысль, что незачем делать всю это возню с select'ами, проще сделать сервер, который обрабатывает только одно соединение за раз, создать несколько таких и поставить за nginx например.
О, спасибо.

Я примерно так и представлял себе =)
А с чего ему быть не далеко от gcc ??? От того что он транслируется в сишный код не следует то что он этот самый сишный код способен догнать.
НЛО прилетело и опубликовало эту надпись здесь
Читайте название, там так и написано «сборка и запуск» :)
НЛО прилетело и опубликовало эту надпись здесь
Все просто позавидовали вашей интеллектуальности.
Нет, просто this is how it works :) Согласные плюсуют хсилу и идут себе дальше, несогласные брызжа слюной, лезут в профиль, минусуют карму, проклинают вас, делают куклу вуду с вашим именем и сжигают её, затем записывают ваше имя в блокнотик, и минусуют все ваши комментарии. Знаем, проходили :)

Просто такова натура человека.
Шо вы все паритесь. Ведь добавили кнопку RESET ептить)) Будет шо написать хуяк нажал и запостил статью. А пока пиши комменты не задрачиваясь на всю эту приблуду с +- и кармой ))
А кто сказал что я парюсь? :) Я просто разъяснил человеку некоторые аспекты пребывания на Хабре ;) А Reset использовать не буду пока-что, во-первых потому что писать статьи не собираюсь, во-вторых теперь мне плевать если у кого-нибудь мой коммент вызовет анальные колики и могу писать что взбредёт в голову :)

хуйпизда
:D ))
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Такие вещи, конечно, прикольные — позволяют ускорять проект в несколько раз, но… Facebook — это многомиллионные аудитории пользователей каждый день, им-то оно надо, а вот обычным владельцам сайтов, думаю, что не очень. Проще доплатить за аренду более крутого сервера, чем разбираться с этим. По крайней мере пока.
а можно будет под винду поставить?
А зачем?
допустим я хочу его потестить на локальной машине, что делать?
Самым простым решением будет использование виртуалки.
И вы надеетесь под виндой, получить какие-либо объективные результаты?

Странно тестировать новый компрессор от AMG на ЗМЗ — 469.
А вы попробуйте потестить компрессор на ЗМЗ-469, результат будет впечатляющим :)
Думаю, его просто разорвёт.
Зато теперь можно писать объявления вроде «допилю ваш php-код на с++». irony
Помесь негра с мотоциклом
НЛО прилетело и опубликовало эту надпись здесь
Когда у тебя будет 20k серверов а зловещь сократит их до 10k, тогда и поговорим
НЛО прилетело и опубликовало эту надпись здесь
вы очень умны и у вас очень много серверов. а в Фейсбуке действительно дураки сидят с виртуальным хостингом (дорогим, за 27 баксов и 15 центов в месяц). потому вы юзаете С++/ Lua / Python, а дураки из фейсбука пишут на ПХП и используют Хип-Хоп. Думаю, вам стоит накатать им емейл и открыть глаза, что они поступают неправильно.
НЛО прилетело и опубликовало эту надпись здесь
Вы — лузер. Создатели фейбука — не лузеры. Их проект успешен что в плане популярности, что в плане доходов, что в плане влияния на интернет и его будущее (может быть успешный проект, но незначительно влияющий на историю развития).

Вы заявили:
Тем более человек имеющий 20к серверов никогда в жизни не будет юзать ПХП. Зачем оно там? Там будет стоять С++/ Lua / Python или что то в этом духе.

И вы соврали. Потому что у фейсбука over 9000 серверов и они используют PHP, а не С++/ Lua / Python.
и да, жалеть меня не надо. я считаю себя более успешным, чем 95% моих одногодок. По каким показателям я сужу — не спрашивайте, это моя личная внутренняя оценка
Что с тобой случилось?

Дрожит рука и трудно говорить,
Бежит слеза, а сердце все горит,
Болит душа, но чувства притупились.
Смешно, но я не знаю, что с тобой случилось.

:(
НЛО прилетело и опубликовало эту надпись здесь
я какбэ намекаю что раньше ты доставлял больше лулзов ;)
НЛО прилетело и опубликовало эту надпись здесь
Лёд тронулся. давно зреет идея написать большой svn хук, который оптимизировал бы коды, сливал статику, типа css|js в один файл итд итп.
Всё идет к тому, что языки высокого уровня теснят языки низкого уровня и ручную оптимизацию. Неужели золотое правило «Машинное время дешевле человеческого» когда-нибудь станет аксиомой?
Интересно было бы в взять какой-нибудь реальный проект на популярном движке (например ZF) и посмотреть, как будут выглядеть результаты нагрузочного тестирования «до» и «после». Хотя, как я понял, пока даже Wodpress скомпилить не получается :(
Тесты php проводились с использованием APC или на чистом php? Если на чистом — то смысла в таких тестах нет, почти никто в здравом уме не использует php без таких вещей.
Поэтому большая просьба — провести все тесты отдельно с APC.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации