Пользователь
0,0
рейтинг
21 февраля 2010 в 11:21

Разработка → Сборка и запуск HipHop-PHP

PHP*

Почти три недели назад был анонсирован новый проект от Facebook. Он называется HipHop-PHP.
Для широкой публики исходные коды стали доступны лишь сутки назад.

HipHop был создан для улучшения производительности Facebook. Он преобразует PHP код в C++ код и комплирует его с помощью g++. HipHop доступен под opensource лицензией.

В данной статье описан процесс сборки HipHop из исходных кодов и его использование.


Процесс сборки


1. Клонируем репозиторий


$ git clone git://github.com/facebook/hiphop-php

2. Устанавливаем необходимые библиотеки


Установите неоходимые библиотеки, указанные в http://wiki.github.com/facebook/hiphop-php/building-and-installing. Обратите внимание на минимальные версии.

Замечания:
  1. Для TBB(Thread Building Blocks) минимальная версия 2.2, хоть это и не написано
  2. Необходимо пересобрать libcurl и libevent с патчами от разработчиков
    Если увидели сообщение "struct evhttp_request has no member named ext_method" — значит, у вас не пропатченный libevent
  3. Мне также потребовалось установить Google Perftools

3. Устанавливаем библиотеку libmbfl


$ cd hiphop-php
$ git submodule init
$ git submodule update

4. Настраиваем переменные окружения


$ export HPHP_HOME=`pwd`
$ export HPHP_LIB=`pwd`/bin

5. Перед сборкой


HipHop для сборки использует cmake. В исходном скрипте некоторые библиотеки были пропущены.
Чтобы это исправить, устанавливаем патч:

$ curl sparcs.kaist.ac.kr/~tinuviel/hiphop/cmake-missing-library.diff | patch -p1

6. Если у вас 32-битная система


HipHop изначально написан под 64-битную архитуктуру. Если у вас 32-битная, то нужно установить патчи:

$ curl sparcs.kaist.ac.kr/~tinuviel/hiphop/src-util-hash-long-long.diff | patch -p1
$ curl sparcs.kaist.ac.kr/~tinuviel/hiphop/src-cpp-base-ssize_t.diff | patch -p1
$ curl sparcs.kaist.ac.kr/~tinuviel/hiphop/src-lib-format-string.diff | patch -p1

7. Сборка


$ cmake .

и еcли нет ошибок, то

$ make

Дополнение для пользователей Debian, Ubuntu и других


Процесс установки хорошо описан здесь, но не забудьте про патчи для 32-битной системы.

Запуск


Создадим в папке src/hphp файл index.php, с содержимым
  1. <?php
  2.    echo 'Hello HipHop';
  3. ?>

Компилируем и запускаем:
$ time ./hphp index.php --keep-tempdir=1 --log=3
running hphp...
creating temporary directory /tmp/hphp_71TLF1 ...
parsing inputs...
parsing ./index.php...
parsing inputs took 0'00" (6 ms) (null)
pre-optimizing...
pre-optimizing took 0'00" (0 ms) (null)
inferring types...
inferring types took 0'00" (0 ms) (null)
post-optimizing...
post-optimizing took 0'00" (0 ms) (null)
creating CPP files...
creating CPP files took 0'00" (213 ms) (null)
compiling and linking CPP files...

compiling and linking CPP files took 1'30" (90733 ms) (null)
running executable /tmp/hphp_71TLF1/program --file index.php...
Hello HipHopall files saved in /tmp/hphp_71TLF1 ...
running hphp took 1'31" (91747 ms) (null)

real	1m31.791s
user	1m21.157s
sys	0m6.500s

В папке /tmp/hphp_71TLF1 находится довольно интересное содержимое:
$ ls -l /tmp/hphp_71TLF1/
итого 25152
-rw-r--r-- 1    20673 Фев 21 12:19 CMakeCache.txt
drwxr-xr-x 6     4096 Фев 21 12:21 CMakeFiles
-rw-r--r-- 1     1558 Фев 21 12:19 cmake_install.cmake
-rw-r--r-- 1     2518 Фев 21 12:19 CMakeLists.txt
-rw-r--r-- 1    18343 Фев 21 12:19 Makefile
drwxr-xr-x 2     4096 Фев 21 12:19 php
-rwxr-xr-x 1 25653366 Фев 21 12:21 program
drwxr-xr-x 2     4096 Фев 21 12:19 sys
$ ls -l /tmp/hphp_71TLF1/php
итого 12
-rw-r--r-- 1 783 Фев 21 12:19 index.cpp
-rw-r--r-- 1 415 Фев 21 12:19 index.fw.h
-rw-r--r-- 1 475 Фев 21 12:19 index.h

Cодержимое файла /tmp/hphp_71TLF1/index.c:

  1. #include <php/index.h>
  2. #include <cpp/ext/ext.h>
  3.  
  4. namespace HPHP {
  5. ///////////////////////////////////////////////////////////////////////////////
  6.  
  7. /* preface starts */
  8. /* preface finishes */
  9. Variant pm_php$index_php(bool incOnce /* = false */, LVariableTable* variables /* = NULL */) {
  10.   FUNCTION_INJECTION(run_init::index.php);
  11.   {
  12.     DECLARE_GLOBAL_VARIABLES(g);
  13.     bool &alreadyRun = g->run_pm_php$index_php;
  14.     if (alreadyRun) { if (incOnce) return true;}
  15.     else alreadyRun = true;
  16.     if (!variables) variables = g;
  17.   }
  18.   DECLARE_GLOBAL_VARIABLES(g);
  19.   LVariableTable *gVariables __attribute__((__unused__)) = get_variable_table();
  20.   print("Hello HipHop");
  21.   return true;
  22. } /* function */
  23.  
  24. ///////////////////////////////////////////////////////////////////////////////
  25. }


В итоге скомплированная программа занимает целых 25 мегабайт.
Но помимо консольного режима, ее можно запустить в режиме веб-сервиса:

/tmp/hphp_71TLF1/program -m server -p 8080

и лицезреть приветсвие по адресу localhost:8080/index.php

Update. Оценка производительности


Конфигурация


Processor: 2x Intel® Pentium® Dual CPU T2370 @ 1.73GHz
Operating System: Debian GNU/Linux squeeze/sid
Apache/2.2.14 (Debian) with modphp
PHP 5.2.12-2 with Suhosin-Patch 0.9.7 (cli) (built: Jan 11 2010 17:30:06)
gcc version 4.4.3 20100108 (prerelease) (Debian 4.4.2-9)

Тест №1. «В лоб»


Запуск теста по мотивам хабратопика «Производительность C++ vs. Java vs. PHP vs. Python. Тест «в лоб»

$ time php test.php 
answer: 39

real	0m32.308s
user	0m32.258s
sys	0m0.012s

$ time /tmp/hphp_4C67mv/program --file test.php
answer: 39

real	1m6.683s
user	1m6.376s
sys	0m0.168s

$ g++ test.cpp 
$ time ./a.out 
answer: 39

real	0m1.758s
user	0m1.744s
sys	0m0.000s

Тест №2. Apache Benchmark


test.php:
<?php
   for($i = 0; $i < 1000; $i++)
      echo var_dump($_SERVER);
?>


Запуск HipHop в режиме веб-сервиса:
$ ./program -m server -p 8080
$ ab -n 1000 -c 5 http://127.0.0.1:8080/test.php

Concurrency Level:      5
Time taken for tests:   67.019 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      1166084000 bytes
HTML transferred:       1166000000 bytes
Requests per second:    14.92 [#/sec] (mean)
Time per request:       335.096 [ms] (mean)
Time per request:       67.019 [ms] (mean, across all concurrent requests)
Transfer rate:          16991.44 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       2
Processing:   124  335  56.5    340     477
Waiting:      120  329  56.2    335     467
Total:        124  335  56.5    341     477


Запуск стандартного PHP c помощью Apache with modphp:
$ ab -n 1000 -c 5 http://127.0.0.1:80/test.php
...
Concurrency Level:      5
Time taken for tests:   27.180 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      1139183000 bytes
HTML transferred:       1139000000 bytes
Requests per second:    36.79 [#/sec] (mean)
Time per request:       135.901 [ms] (mean)
Time per request:       27.180 [ms] (mean, across all concurrent requests)
Transfer rate:          40929.90 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0      11
Processing:    52  136  32.2    137     216
Waiting:        0    3   1.5      3      17
Total:         52  136  32.2    137     216

Тест №3. Fractal Benchmark


Language Time Relative Speed
C gcc-4.4.3 0.05 seconds 1.00 x
HipHop 0.18 seconds 3.60 x
Python 2.51 2.35 seconds 47.00 x
PHP 5.2.12 3.08 seconds 61.60 x


Выводы (личное мнение)


В двух тестах он оказался почти в два раза медленней стандартного PHP. Но не стоит забывать, что это всего лишь первая версия. Сам процесс сборки HipHop довольно тяжелый, а как таковой установки вообще нет. Установить его можно лишь для того, чтобы понять возможность трансформирования вашего PHP-приложения в C++. Явный минус HipHop — это отсутствие поддержки PostgreSQL (пока только MySQL) и отсутствие возможности подключить существующие PHP-модули. Надеюсь что у этого проекта все еще в впереди.

На этом все. Подробней про запуск HipHop можно прочитать здесь.

Также на GitHub есть два интересных форка:
  1. http://github.com/h4ck3rm1k3/hiphop-php/ — содержит дополнения для сборки deb-пакета
  2. http://github.com/sanxiyn/hiphop-php/tree/32bit — содержит уже установленные патчи для 32-битной версии
@Sishnikov
карма
38,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

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

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

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

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

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

    $ 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 раза медленнее или что?

    Напишите в статье выводы.
    • 0
      Нет, там была компилсяция полученого cpp файла, а потом запуск бинарика.

      $ g++ test.cpp
      $ time ./a.out
      answer: 39

      А так действительно странно, во всех тестах показатели у HipHop получаются хуже.
    • –1
      $ 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

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

    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 :)
  • +9
    Break Dance на Ruby on Ralis coming soon…
  • +9
    Тесты абсолютно глупые. Какой смысл миллиард раз перемножать числа, когда в вебе используются совсем другие операции?

    Только запуск и подключение файлов в php занимают несколько мс, у программы в режиме сервиса такого оверхеда не будет. Кроме того, можно не пересоздавать все объекты при каждом запуске, а повторно их использовать, что дает хороший прирост производительности.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.