Скорость работы приложения зачастую является определяющим фактором, ведь как известно - время деньги.
Пользователь никогда непростит "тормознутости" сайту и уйдёт от туда при первой же возможности, так и не оценив твой супер-пупер
движок и замечательный контент. Сегодня команда netfaq.ru поделиться с тобой полезным опытом
оптимизации PHP кода.
1) И самый важный совет. Продумывай алгоритм. Максимально упрости всё и везде, где это возможно.
Поверь нам, это очень поможет тебе как при отладке так и при сопровождении проектов.
2) echo работает быстрее чем print
3) Заключай строку с текстом без переменных в ординарные кавычки (`...`) вместо двойных ("...").
4) Используй sprintf(..) для форматированного-вывода строки, это примерно в 10 раз быстрее
чем вывод переменных в строке обрамлённой в двойные кавычки.
5) При обходе всех элементов массива циклом for, лучше вычислить его размер заранее. Это ускорит исполнение. Приведу пример:
6) Следует обнулять либо разыменовывать (unset) ненужные переменные, это сильно экономит память.
7) Забудь о ,
8) Везде где можно заменяй require_once() на require()
9) Указание абсолютного пути к файлу при вызове include(), require() экономит ресурсы.
10) require() и include() с недавних пор работают совершенно идентично, отличаются лишь в одном,
при вызове require("file.inc.php"), если file.inc.php не существует, то скрипт прерывает свою работу.
11) Начиная с PHP5, timestamp начала выполнения скрипта может быть получен из переменной $_SERVER[`REQUEST_TIME`],
лучше использовать её чем вызов time() или microtime().
12) Регулярные выражения в формате PCPE выполняются быстрее чем в EREG. Но всегда стоит рассмотреть возможность использования
"родных" для PHP функций , и
.
13) При парсинге данных в формате XML стоит использовать , а для парсинга HTML можно попробовать
или из PHP 4.
14) быстрее чем .
15) Условный оператор "else if" быстрее чем "операторы выбора" типа
16) Подавление ошибок при помощи префикса "@" работает очень медленно.
17) Что-бы увеличить пропускную способность, можно использовать mod_deflate в Apache v.2*, либо mod_gzip для Apache v.1*
18) Завершение сеанса работы с СУБД не просто хороший тон, но и полезное правило.
19) $row[`id`] в 7 раз быстрее чем $row[id], интерпритатор сразу "понимает" что id это константа, а не переменная, соответственно индекс в массиве находится быстрее.
20) Использование это стандарт которого стоит придерживаться.
21) Рекомендуется иметь в php.ini
22) PHP скрипты обрабатываются Апачем в от 2 до 10 раз медленне чем статичные html страницы.
23) PHP скрипты (кроме кэшированных) всегда интерпретируются "на лету" каждый раз когда их вызывают.
Если установить инструмент кэширования (такой как ) это ускорит
отображение страницы за счёт устранения времени на компиляцию скрипта.
24) Альтернативной техникой кэширования явлется использование для тех страниц которые изменяются
относительно редко.
25) Используй isset() везде где это возможно для замены strlen():
if (strlen($foo) < 5) { echo “Foo is too short”; } vs. if (!isset($foo{5})) { echo “Foo is too short”; } ).
26) ++$i работает быстрее чем $i++, используй
27) Следует полагаться на "родные" (native) функции PHP (они работают гораздо быстрее) и не изобретать велосипед.
Если требуется написать очень быструю функцию аналога которой нет в PHP то лучше всего сделать это
на Си в виде расширения, или оформить как модуль.
28) Документируй свой код.
29) Изучи различие между хорошим кодом и плохим.
30) Придерживайся стандартов программирования, это поможет другим людям читать твой код.
31) Помни о принципе разделениия содержимого от представления. Короче говоря разделяй PHP и HTML.
32) Зачастую не стоит париться с такими сложными шаблонизаторами как Smarty. Достаточно использовать средства включенные в PHP.
Такие как
33) Никогда не доверяй данным исходящим от пользователя (типа $_POST[..], $_GET[..]), используй
при работе с MySQL и при отображении данных (из БД к примеру) в HTML.
34) В рабочем проекте надо отключить display_errors(). Следи за тем что-бы в корневой папке проекта не оказался скрипт с phpinfo().
Всё это ценная информация для хакеров.
35) Выключи , и вообще отвыкай от них если до этого использовал. В PHP6 их поддержка будет полностью отключена.
36) Не храни пароли в БД открытым текстом. Используй
37) Используй чтоб хранить IP адреса в цифровом формате вместо строкового.
38) Не забывай про PEAR. Аналог СPANEL в Perl. База содержит множество уже готовых к работе модулей, способных решать самые разнообразные проблемы.
39) Не забдуь после header(`Location:`.$url) поставить die();
40) В ООП, если метод может быть следует его таковым объявить. Скорость исполнения вырастает на порядок.
41) Инкрементация локальных переменных в ООП методе происходит наиболее быстро.
42) Инкрементация переменной принадлежащей самому объекту (например $this->prop++) в 3 раза медленне чем локальной переменной.
43) Инкрементация необъявленной локальной переменной в 9-10 раз медленне чем уже объявленной.
44) Избегай неиспользуемых переменных.
45) Прежде чем садиться что-то писать, поищи аналог в гугле, почерпнёшь много нового и наверняка в голове появяться свежии идеи.
46) Хорошо спроектированный класс устраняет массу проблем с отладкой и сопровождением.
47) Функция с одним параметром и пустым "телом" исполняется по времени столько же сколько 7-8 инкрементаци $local++,
аналогичный метод в объекте исполняется по времени ~ 15 инкрементаций $local++.
48) Стоит разумно использовать OOП. Зачастую использование ООП замедляет выполнение программ.
49) Делай unset (уничтожение) переменной которую больше нигде не использовать. Это относится к параметрам подключения к БД например.
50) который пригождается очень часто.
Опубликовано: 2008-06-14 18:19:21 purple_m0nkey
Комментарии
WikiFunna
Is it possible to contact administration?
Thank you
AjcuiVd289
This is known that money makes us disembarrass. But how to act when somebody has no money? The one way is to try to get the loan and secured loan.
AjcuiVd289
Buildings are not cheap and not everybody can buy it. But, business loans are invented to help different people in such cases.