Есть ли смысл минимизировать PHP? - PullRequest
94 голосов
/ 02 ноября 2010

Я знаю, что вы можете минимизировать PHP, но мне интересно, есть ли смысл. PHP - интерпретируемый язык, поэтому он будет работать немного медленнее, чем скомпилированный язык. У меня такой вопрос: увидят ли клиенты заметное улучшение скорости загрузки страниц и так далее, если я уменьшу свой PHP?

Кроме того, есть ли способ компилировать PHP или что-то подобное?

Ответы [ 7 ]

154 голосов
/ 02 ноября 2010

PHP компилируется в байт-код, который затем интерпретируется поверх чего-то, напоминающего виртуальную машину. Многие другие языки сценариев следуют тому же общему процессу, включая Perl и Ruby. На самом деле это не традиционный интерпретируемый язык, как, например, Бейсик.

Не будет эффективного увеличения скорости, если вы попытаетесь «минимизировать» источник. Вы получите значительное увеличение при использовании кэша байт-кода , такого как APC .

Facebook представила компилятор с именем HipHop , который преобразует исходный код PHP в код C ++. Расмус Лердорф, один из лучших PHP-ребят, в начале этого года сделал презентацию для Digg , в которой рассказывается об улучшениях производительности, данных HipHop. Короче говоря, это не намного быстрее, чем оптимизация кода и использование кэша байт-кода. Хип-хоп является излишним для большинства пользователей.

Facebook также недавно представила HHVM , новую виртуальную машину, основанную на их работе по созданию HipHop. Он все еще довольно новый, и неясно, обеспечит ли он значительный прирост производительности для широкой публики.

Чтобы убедиться в том, что это прямо указано, прочитайте эту презентацию полностью. В нем указаны многочисленные способы для сравнения и профилирования кода и выявления узких мест с помощью таких инструментов, как xdebug и xhprof , также из Facebook.

13 голосов
/ 02 ноября 2010

Откажитесь от идеи минимизации PHP в пользу использования кэша кода операции, например PHP Accelerator или APC.

Или что-то еще, например memcached

3 голосов
/ 31 марта 2013

Это не столько ответ, сколько реклама. Я работаю над расширением PHP, которое переводит коды операций Zend для работы на виртуальной машине со статической типизацией. Это не ускоряет произвольный код PHP. Это позволяет вам писать код, который работает намного быстрее, чем обычный PHP. Ключ здесь - статическая типизация. На современном процессоре динамический язык съедает штраф за неправильное предсказание ветвления влево и вправо. Тот факт, что PHP-массивы являются хеш-таблицами, также обуславливает высокую стоимость: много ошибочных прогнозов ветвей, неэффективное использование кэша, плохая предварительная выборка памяти и отсутствие оптимизации SIMD. Неправильное предсказание ветвлений и, в частности, кеширование являются ахиллесовой пятой для современных процессоров. Моя маленькая виртуальная машина обходит эту проблему, используя статические типы и массив C вместо хеш-таблицы. Результат заканчивается примерно в десять раз быстрее. Это использует интерпретацию байт-кода. Расширение может опционально компилировать функцию через gcc. В этом случае вы получаете в два-пять раз больше скорости.

Вот ссылка для всех, кому интересно:

https://github.com/chung-leong/qb/wiki

Опять же, расширение не является обычным ускорителем PHP. Вы должны написать специальный код для этого.

3 голосов
/ 02 ноября 2010

С помощью некоторого переписывания (более коротких имен переменных) вы могли бы сэкономить несколько байтов памяти, но это также редко имеет значение.

Однако я проектирую некоторые из моих приложений таким образом, который позволяет объединять сценарии вместе,С php -w он может быть значительно сжат, добавляя небольшое увеличение скорости при запуске скрипта.Однако на сервере с включенным кодом операции сохраняется только несколько проверок файла mtime.

1 голос
/ 21 января 2015

Вам не нужно минимизировать PHP.Для повышения производительности установите кэш Opcode;но идеальным решением было бы обновить ваш PHP до версии 5.5 или выше, потому что более новые версии по умолчанию имеют кэш кода операции под названием Zend Optimizer, который работает лучше, чем другие http://massivescale.blogspot.com/2013/06/php-55-zend-optimiser-opcache-vs-xcache.html.

1 голос
/ 02 ноября 2010

Есть PHP-компиляторы ... см. этот предыдущий вопрос для списка;но (если вы не размером с Facebook или не ориентируете ваше приложение на запуск на стороне клиента), они, как правило, доставляют гораздо больше хлопот, чем стоят

Простое кэширование кода операции даст вам больше преимуществ дляприложенные усилияИли профилируйте свой код для выявления узких мест, а затем оптимизируйте его.

0 голосов
/ 28 апреля 2019

Да, есть одна (нетехническая) точка.

Ваш хостер может отслеживать ваш код на своем сервере. Если вы уменьшите и уменьшите его, шпионам будет сложнее украсть ваши идеи.

Одной из причин минимизации и уменьшения php может быть защита от шпионов. Я думаю, что некрасивый код должен сделать один шаг в автоматическом развертывании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...