После некоторой работы мне удалось запустить HipHop на моем сервере. Но по мере того, как я изучаю и отлаживаю процесс переноса моего кода во что-то, что хорошо работает с преобразователем HipHop, я обнаружил, что мне приходится часто перекомпилировать его... Тем не менее, создание моей кодовой базы из 130 файлов занимает более 10 минут. Это кажется необычно длинным в свете недавних сообщений в блоге Facebook об улучшении времени компиляции.
Кому-нибудь повезло улучшить время компиляции? Это может быть просто общее незнание аргумента, который мне не хватает... Я больше разбираюсь в PHP, чем в C++.
Информация из Facebook, а также моя команда и журналы приведены ниже.
Фейсбук
В сообщении в блоге Facebook они говорят, что могут довольно быстро скомпилировать огромный двоичный файл.
Помимо оптимизации скомпилированного кода, много усилий было потрачено на улучшение самого компилятора. Несколько фаз компилятора, включая синтаксический анализ, оптимизацию и генерацию кода, теперь распараллелены. Хайвс внес изменения в сгенерированный код C++, чтобы ускорить его компиляцию без потери эффективности во время выполнения. Мы можем собрать двоичный файл размером более 1 ГБ (после удаления отладочной информации) примерно за 15 минут с помощью distcc. Хотя более быстрая компиляция напрямую не способствует эффективности во время выполнения, она помогает улучшить процесс развертывания.
Журнал компиляции
$HPHP_HOME/src/hphp/hphp --input-list=files.list -k 1 --log=3 --include-path="." -v "AllDynamic=true" -o /root/stocks_hphp/
running hphp...
creating temporary directory /tmp/hphp_h3vCKc ...
parsing inputs...
#parsing inputs took 0'00" (330 ms) wall time
pre-optimizing...
pre-optimizing took 0'00" (150 ms) wall time
inferring types...
inferring types took 0'00" (160 ms) wall time
post-optimizing...
post-optimizing took 0'00" (100 ms) wall time
creating CPP files...
creating CPP files took 0'00" (590 ms) wall time
saving code errors...
compiling and linking CPP files...
compiling and linking CPP files took 11'50" (710315 ms) wall time