Showing posts with label конкатенация. Show all posts
Showing posts with label конкатенация. Show all posts

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