Intereting Posts
Определение языка браузера в PHP сортировать массив в порядке DESC API-интерфейс Facebook Graph – fql устарел для версий v2.1 и выше Вставьте данные в таблицу сразу, которые извлекаются из команды select mySQL Создать таблицу с проверкой PHP с использованием значения и текущего значения (Массив) Лучший PHP DAL (уровень абстракции данных) до сих пор Пользовательский php.ini при выполнении php в качестве сценария оболочки PHP: относительно абсолютных URL-адресов в curl'ed html PHP Instanciation и поздний статический контекст привязки Удаление пробелов или% 20 в url с использованием htaccess Как выбрать наименьшее значение из нескольких столбцов с помощью PHP Объединение PDF-файлов с помощью PHP Добавить пользовательское поле в представлении yii2, которое отсутствует в модели Последствия вставки положительного поиска в произвольное регулярное выражение для имитации смещения байтов Не удалось открыть входной файл: artisan

Работает ли php быстрее без предупреждений?

Так как PHP-код будет работать отлично, даже если он пронизан предупреждениями и уведомлениями о неопределенных индексах и нестатических методах, называемых статическими, и т. Д., Вопрос в том, что если я потрачу время на удаление всех уведомлений и предупреждений из моего кода, работать значительно быстрее?

Я добавил статью, в которой автор сделал некоторые ориентиры; к сожалению, это на французском … но вот оно (может быть, вы поймете некоторые его части) : Ne faites pas d'erreur

И вот цифры, чтобы помочь людям, которые не читают французский:

  • 10 тыс. Уведомлений, с включенными error_reporting и display_errors : 5,162,76 мс
  • тот же, но с отключенным display_errors : 136,18 мс
  • то же, но с отключением error_reporting тоже: 117.79 мс
  • и, наконец, после исправления кода, чтобы он больше не выдавал никакого уведомления: 19,51 мс

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

Derick Rethans говорит то же самое в этой статье: Пять причин, по которым следует избегать оператора закрывания (@) (цитирование) :

Причина 3: медленно (часть 2)

Всякий раз, когда PHP генерирует сообщение об ошибке внутренне, он обрабатывается и отформатируется вплоть до полностью отформатированного сообщения, которое может выводиться прямо в браузер.
Только перед его отображением устанавливается параметр error_reporting . Это, однако, не связано исключительно с @ -оператором.
Сообщение об ошибке всегда полностью отформатировано до того, как будет проверено error_reporting , или display_errors .

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

Что вы должны сделать, чтобы оценить эффект, это профилирование на уровне C: установите valgrind (предположим, что вы на Linux), а затем запустите

 callgrind /path/to/bin/php /path/to/script.php 

это генерирует файл с именем callgrind.12345 или около того, загрузите этот файл в приложение, например kcachegrind, и найдите php_error_docref0 или php_error_cb чтобы узнать, сколько времени было потрачено на обработчик ошибок.

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

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

В большинстве случаев я бы не назвал это «значительным» улучшением, но работающий код, который не генерирует никаких ошибок, естественно работает быстрее, чем код, который должен генерировать трассировку стека для каждой другой строки.

Ознакомьтесь с: http://www.noamdesign.com/Web-Design-Blog/15-tips-to-optimizing-your-php-code/ для получения дополнительной информации о небольших оптимизации, которые вы можете внести в свой код.

По моему собственному опыту, я обнаружил, что 95% оптимизации кода обычно касается того, как вы используете свою базу данных.