|
|
|
| Разработчики Facebook обнародовали проект HipHop for PHP, который превращает код на языке PHP в код на языке C++. Последний компилируется в обычное приложение, которое выполняется гораздо быстрее, чем сценарий на PHP. В развитии проекта могут принять участие все желающие - Facebook раскрыл его исходные коды.
HipHop for PHP помог крупнейшей социальной сети в мире вдвое снизить нагрузку на процессор на ее веб-серверах и ускорить показ 400 миллиардов PHP-страниц в месяц. Тем самым значительно снизились требования к числу серверов, а следовательно, и расходы компании.
Разработка HipHop for PHP заняла два года. В настоящее время проект содержит 300 тысяч строк кода и прошел свыше пяти тысяч тестов. HipHop for PHP работает с некоторыми ограничениями, запрещая некоторые слишком сложные для перевода на C++ или медленные конструкции PHP.
PHP - один из самых популярных языков веб-разработки. Он используется более чем на 20 миллионах сайтов, в том числе на таких ресурсах, как Wikipedia, Yahoo! и Digg. Facebook - один из самых посещаемых сайтов, активно применяющих PHP. Его аудитория превышает 350 миллионов человек.
http://www.lenta.ru/news/2010/02/03/hiphop/ | |
|
|
|
|
|
|
|
для: cheops
(04.02.2010 в 11:45)
| | Интересно ) | |
|
|
|
|
|
|
|
для: cheops
(04.02.2010 в 11:45)
| | Зачем было переводить в С++, написали бы сразу компилятор PHP и скорость была бы еще выше. | |
|
|
|
|
|
|
|
для: alexon
(04.02.2010 в 15:21)
| | 1. зачем писать компилятор, когда их кучи? (правда могут быть аргументы)
2. Вы уверены, что компилированный PHP будет быстрее компилированного С++ ? )) | |
|
|
|
|
|
|
|
для: ddhvvn
(04.02.2010 в 16:10)
| | Поясните пожалуйста, кучи компиляторов для PHP или просто компиляторов? А насчет 2-го пункта думаю да быстрее.
Если следовать предложенной выше идеологии то вообще любой язык нужно перекомпилировать в С++ только потому, что там уже есть компилятор. | |
|
|
|
|
|
|
|
для: cheops
(04.02.2010 в 11:45)
| | Вот бы узнать список ограничений!
Чтобы сразу писать под него | |
|
|
|
|
|
|
|
для: cheops
(04.02.2010 в 11:45)
| | дауно пора...) когда же мы.. простые смертные... коснемся сие чуда?) | |
|
|
|
|
|
|
|
для: а-я
(04.02.2010 в 16:38)
| | что-то меня это не очень радует ,) по сути скомпилированные cgi-программы можно запускать и написанные на чём-то другом, запускать их должен сервер
, apache например, от этого они не очень-то и быстрее работают
,каждая такая программа ищет или загружает модули операционной системы,
и вообще инициализируется, а в сервере это всё уже загружено при запуске
, если говорить о cgi.
А если на php нужно будет делать просто приложения для разных ОС, то это будет уже не совсем php
, какой функцией тогда открыть/закрыть дисковод, или измерить размер рабочего стола.
Другое дело что интересно было-бы посмотреть на php-код переведённый на C
, или если просто ко всему этому будет модуль подобно запуску скриптов из коммандной строки, но вместо коммандной строки будет окно со множеством кнопок
, для производительности в web мне так кажется такому php нужна будет стать полнофункциональным http-сервером
, но надо будет по случаю сходить почитать как всё это дело развивается :)
В с++ заметно большеватые пограммы получаются, а скрипты не так много места занимают. | |
|
|
|
|
автор: Тень& (04.02.2010 в 23:20) |
|
|
для: heed
(04.02.2010 в 22:50)
| | IMHO, тут половина ни разу на C++ не писала, а уже даёт свои оценки | |
|
|
|
|
 3 Кб |
|
|
для: Тень&
(04.02.2010 в 23:20)
| | я делал простенькие .cgi , запускал их из под apache, и по времени получалось больше чем php , которое стоит модулем apache.
А это hipHop буду сравнивать только с mod_perl ,) но пока что-то так и не нашёл где у них какие тесты можно скачать
, нашёл статью автора, о принципах заложенных в это. Заманчиво, но пока не увижу буду сомневаться :)
Хотя может я не правильно понял результат теста
H:\usr\local\apache\bin>ab -n 5 -c 5 http://comp/cgi.cgi
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking comp (be patient).....done
Server Software: Apache/2.2.11
Server Hostname: comp
Server Port: 80
Document Path: /cgi.cgi
Document Length: 11 bytes
Concurrency Level: 5
Time taken for tests: 0.047 seconds
Complete requests: 5
Failed requests: 0
Write errors: 0
Total transferred: 1230 bytes
HTML transferred: 55 bytes
Requests per second: 106.67 [#/sec] (mean)
Time per request: 46.875 [ms] (mean)
Time per request: 9.375 [ms] (mean, across all concurrent requests)
Transfer rate: 25.63 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 31 41 8.6 47 47
Waiting: 16 31 11.0 31 47
Total: 31 41 8.6 47 47
|
H:\usr\local\apache\bin>ab -n 5 -c 5 http://comp/cgi-glob/printenv.pl
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking comp (be patient).....done
Server Software: Apache/2.2.11
Server Hostname: comp
Server Port: 80
Document Path: /cgi-glob/printenv.pl
Document Length: 1246 bytes
Concurrency Level: 5
Time taken for tests: 0.016 seconds
Complete requests: 5
Failed requests: 0
Write errors: 0
Total transferred: 7485 bytes
HTML transferred: 6230 bytes
Requests per second: 320.00 [#/sec] (mean)
Time per request: 15.625 [ms] (mean)
Time per request: 3.125 [ms] (mean, across all concurrent requests)
Transfer rate: 467.81 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 0 6 8.6 8 16
Waiting: 0 6 8.6 8 16
Total: 0 6 8.6 8 16
|
printenv.pl стандартная распечатка переменных окружения
cgi.cgi компилировал такой
//<?
#include <windows.h>
#pragma comment(linker, "/ENTRY:EntryPoint")
HANDLE hSTDIN, hSTDOUT, hSTDERR;
DWORD dTmp;
int EntryPoint(void) {
if (!AllocConsole()) goto _QUIT1;
hSTDIN = GetStdHandle( STD_INPUT_HANDLE );
if (hSTDIN == INVALID_HANDLE_VALUE) goto _QUIT1;
hSTDOUT = GetStdHandle( STD_OUTPUT_HANDLE );
if (hSTDOUT == INVALID_HANDLE_VALUE) goto _QUIT1;
hSTDERR = GetStdHandle( STD_ERROR_HANDLE );
if ( hSTDERR == INVALID_HANDLE_VALUE) {
_QUIT1:
MessageBox(0,"Запуск неудался", "ошибка", 0);
return 0;
}
WriteFile(hSTDOUT, "Content-type:text/plain\n\nHelloWorld\n", 36, &dTmp, 0);
return 0;
}
|
написав в htaccess
Options +ExecCGI
AddHandler cgi-script .cgi
| бинарник прикрепил | |
|
|
|
|
|
|
|
для: cheops
(04.02.2010 в 11:45)
| | http://pro100pro.com/uskoryaem-php-s-hiphop
Как я понимаю, ограничений много. Вероятно, изначально писать на С++ окажется проще. | |
|
|
|