23 October, 2007

40 советов по оптимизации PHP кода. Как написать быстрое приложение

Сегодня попалась интересная статья в которой приводятся 40 советов по написанию более оптимального кода на PHP. С чем то я соглашаюсь, что то мне кажется не совсем верным. К тому же во многих советах пишется что этот способ быстрее в 'три', 'четыре' и т.д раз.. Может быть это и так, но ведь никто не проверял ...

Поэтому ниже представлен простой перевод без всяких купюр

  • Если метод может быть статичным, то обязательно декларируйте его как static
  • Команда echo работает быстрее команды print
  • используйте множественные параметры вместо конкатенации строки
  • Установите maxvalue (до чего крутить цикл) для оператора for перед началом цикла а не в нем
  • Освобождайте память (функция unset) в случае использования больших массивов (array)
  • Избегайте использования методов __get, __set, __autoload
  • использование require_once() дорогостояще
  • Используйте полный путь в include и require, это позволит тратить меньшее время на вычисление системой реального пути
  • Если необходимо узнать время, когда скрипт начал свою работу использование $ _SERVER [ "REQUEST_TIME"] предпочтительнее использования функции time()
  • использование строковых функций strncasecmp, strpbrk and stripos более оптимальное чем использование регулярных выражений
  • Функция str_replace работает быстрее чем preg_replace, и в тоже время функция strtr быстрее функции str_replace
  • Если необходимо в строке заменить всего один символ то лучше использовать функцию для замены которая работает только с символами/строками и не принимает массивов. Функции способные обрабатывать массивы всегда работают более долгое время
  • Оператор case работает более быстро, чем множественные if ..else
  • Подавление ошибки с помощью использования @ сильно замедляет работу
  • Включите модуль apache mod_deflate
  • Закрывайте открытые коннекты к базе после того как отпадает в них необходимость
  • $row[’id’] работает в 7 раз быстрее чем $row[id]
  • Отключите сообщения об ошибках
  • Не используйте функции внутри цикла, в таких случаях for ($x=0; $x < count($array); $x). В этом случае функция count() будет вызываться и выполняться в каждом цикле. Выполните эту функцию до for занеся результат в переменную.
  • Инкремент локальныз переменных работает быстрее чем инкремент глобальных.
  • В методах и функциях используйте локальные счетчики
  • Инкремент свойства метода ($this->prop++) в три раза медленнее инкремента локальной переменной
  • Инкремент необъявленной переменной происходит в 9-10 раз медленней чем предварительно объявленной
  • Объявление глобальных переменных замедляет работу функций
  • Метод на основе классов работает быстрее метода описанном в базовом классе
  • Использование 'одинарных кавычек' позволяет интерпретировать код быстрее, т.к. в случае "двойных кавычек" интерпретатор ичет внутри строки переменные
  • Скорость выдачи клиенту статической страницы (HTML) в несколько раз быстрее выдачи страницы написанной на PHP
  • Установка всевозможных кеширующих модулей (PHP caching product) и их использование позволит увеличить производительность на 25%-100%
  • Сделайте кеш как можно больше (memcached)
  • Использование модуля Apache mod_gzip позволит сократить потребление трафика до 80%, следовательно клиенты получат более быстре странички
  • Используйте профайлер для определения самых "времязатратных" участков кода для возможной последующей оптимизации кода
  • Если позволяет время то пишите функции на С - они работают быстрее
  • Используйте заранее описанные функции
  • Не разделяйте методы слишком много.. Это можэно сделать и потом
  • Не описывайте все подряд структуры как класс, массивы тоже хорошо справляются с этой задачей
  • Если есть возможность не использовать ООП (объектно ориентированное программирование) то и не испльзуйте. (методы и объекты потребляют очень много памяти)
  • Выполнение $i++ более медлительно чем ++$i

1 comment:

Anonymous said...

Интересные факты, некоторые ещё нигде не встречал.