Есть ли смысл в минимизации PHP?


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

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

6 88

6 ответов:

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

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

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

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

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

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

или что-то еще вроде memcached

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

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

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

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

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

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

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

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

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