Я знаю, что вы можете минимизировать PHP, но мне интересно, есть ли в этом смысл. PHP - это интерпретируемый язык, поэтому он будет работать немного медленнее, чем скомпилированный язык. Мой вопрос: увидят ли клиенты видимое улучшение скорости загрузки страниц и тому подобное, если бы я уменьшил свой PHP?
Кроме того, есть ли способ скомпилировать PHP или что-то подобное?
Ответы:
PHP компилируется в байт-код, который затем интерпретируется поверх чего-то, напоминающего виртуальную машину. Многие другие языки сценариев следуют тому же общему процессу, включая Perl и Ruby. Это не совсем традиционный интерпретируемый язык, как, скажем, BASIC.
Если вы попытаетесь «минимизировать» источник, эффективного увеличения скорости не будет. Вы получите значительное увеличение, используя кеш байт-кода, такой как APC .
Facebook представил компилятор под названием HipHop, который преобразует исходный код PHP в код C ++. Расмус Лердорф, один из крупных разработчиков PHP, в начале этого года сделал для Digg презентацию , посвященную улучшениям производительности, предоставленным HipHop. Короче говоря, это не намного быстрее, чем оптимизация кода и использование кеша байт-кода. Для большинства пользователей HipHop является излишним.
Facebook также недавно представил HHVM , новую виртуальную машину, основанную на их работе по созданию HipHop. Он все еще довольно новый, и неясно, обеспечит ли он значительный прирост производительности для широкой публики.
Чтобы убедиться, что это прямо указано, прочтите эту презентацию полностью. Он указывает на многочисленные способы базового и профильного кода и выявления узких мест , используя такие инструменты , как Xdebug и xhprof , а также от Facebook.
источник
Откажитесь от идеи минимизации PHP в пользу использования кеша опкодов, например
PHP Accelerator
, илиAPC
.Или что-то еще вроде
memcached
источник
С помощью некоторой перезаписи (более коротких имен переменных) можно сэкономить несколько байтов памяти, но это также редко бывает значительным.
Однако я разрабатываю некоторые из своих приложений таким образом, чтобы можно было объединять включаемые скрипты вместе. С
php -w
его помощью можно значительно сжать, добавив небольшой прирост скорости для запуска скрипта. Однако на сервере с включенным кодом операции это позволяет сэкономить только несколько проверок времени файла.источник
Это не столько ответ, сколько реклама. Я работаю над расширением PHP, которое переводит коды операций Zend для запуска на виртуальной машине со статической типизацией. Он не ускоряет произвольный PHP-код. Это позволяет вам писать код, который работает быстрее, чем позволяет обычный PHP. Ключевым моментом здесь является статическая типизация. На современном процессоре динамический язык съедает штраф за неправильное предсказание переходов слева и справа. Тот факт, что массивы PHP являются хэш-таблицами, также требует больших затрат: множество ошибочных прогнозов ветвлений, неэффективное использование кеша, плохая предварительная выборка памяти и вообще отсутствие оптимизации SIMD. Ошибочное предсказание переходов и, в частности, промахи в кэше - это ахиллесова пята для современных процессоров. Моя маленькая виртуальная машина обходит эту проблему, используя статические типы и массив C вместо хеш-таблицы. В результате получается примерно в десять раз быстрее. Это использует интерпретацию байт-кода. Расширение может при желании компилировать функцию через gcc. В этом случае скорость увеличивается в два-пять раз.
Вот ссылка для всех, кому интересно:
https://github.com/chung-leong/qb/wiki
Опять же, расширение не является обычным ускорителем PHP. Вы должны написать специальный код для этого.
источник
Да, есть один (нетехнический) момент.
Ваш хостер может шпионить за вашим кодом на своем сервере. Если вы уменьшите и уродите его, шпионам будет труднее украсть ваши идеи.
Одной из причин минимизации и удаления php может быть защита от шпионажа. Я думаю, что некрасивый код должен сделать один шаг в автоматическом развертывании.
источник
Существуют компиляторы PHP ... см. Список в предыдущем вопросе ; но (если вы размером с Facebook или не нацеливаете свое приложение на работу на стороне клиента), они обычно доставляют гораздо больше проблем, чем они того стоят
Простое кэширование кода операции даст вам больше пользы от затраченных усилий. Или профилируйте свой код, чтобы определить узкие места, а затем оптимизируйте его.
источник
Минимизировать PHP не нужно. Чтобы получить лучшую производительность, установите кеш Opcode; но идеальным решением было бы обновить ваш PHP до версии 5.5 или выше, потому что в более новых версиях по умолчанию есть кэш опкодов под названием Zend Optimiser, который работает лучше, чем другие http://massivescale.blogspot.com/2013/06 /php-55-zend-optimiser-opcache-vs-xcache.html .
источник