Я программирую на PHP с 13-ти лет, за многие годы я видел множество различных стилей программирования и использования стандартов. Однако, большинство из них не было оптимизированно.
Сейчас я хотел бы рассказать о различных путях увеличения скорости Ваших скриптов с помощью оптимизации направленной на снижение нагрузки на сервер.
Ковычки
Старайтесь использовать одинарные ковычки везде, где возможно. С ними скрипт будет обрабатываться быстрее, чем с двойными, т.к. PHP ищет переменные в тексте заключенном в двойные ковычки.
Использование одинарных ковычек в массивах также рекомендуется, т.к. это быстрее будет быстре работы без ковычек или с двойными.
Echo vs print
Echo быстрее, чем print. Если Вы используете конкатенацию в вызовах echo, то у Вас есть возможность еще больше оптимизировать Ваши скрипты использованием множества параметров вместо сложения строк. Функция print не способна принять несколько параметров — даже не пытайтесь (прим. перев. — =)).
$resource = 'OLO';
echo 'the user of ', $resource, ' has been selected for a special event.';
//slower and more widely used
echo 'The user of ' . $resource . ' has been selected for a special event.'; event.';
О циклах
Определяйте значения пределов для счетчиков перед циклом, иначе они будут пересчитываться при каждой итерации.
Простые условия
Вместо множества блоков if-else, лучше использовать оператор switch, когда это возможно.
Includes и requires
Существует насколько способов улучшить за счет этого скорость. И прежде всего, бросьте использование require_once — оно гораздо медлительнее include_once. Попробуйте использовать полные пути к файлам в функциях include require — это сбережет серверу время на вычисление пути.
Управление строками
Попробуйте как можно чаще использовать str_ функции вместо preg_.
Str_replace куда быстрее, чем preg_replace, если Вам не нужны регулярные выражения. С другой стороны, strstr быстрее, чем str_replace.
Постарайтесь использовать их вместо preg_ функций: strpos, strpbrk, strncasecmp.
Если Вам нужно сравнить длину строки с каким-то определенным числом, то лучше использовать трюк с isset вместо употребления strlen.
ИМХО, какая-то бессмысленная статья. Для полного новичка, никогда не заглядывавшего в справку и на оф. сайт, может и интересно. А для тех, кто понимает, как работает php, все эти вещи совершенно очевидны.
Кстати, подобные вопросы часто задают на собеседованиях, чтобы быстро избавиться от неадекватных претендентов на вакансии php-программистов и т.п.
P.S. Самый лучший путь оптимизации — использовать инструменты по назначению с пониманием того, как они работают, а не чтение советов.
Согласен.
Особенно про циклы и ветвления прикольно — еще в школе проходили =)
(но сокращать статью не хотелось)
Подобные заметки действительно хорошо помогают при освоении особенностей изучаемого языка программирования.
Со мной был интересный случай, после того, как я прочел пару-тройку подобных статей, но для С++ (я — ява-программист, но знаком с широким кругом разнообразных языков). Я пришел сдавать задачи, а преподаватель удивленно спросил, скомпилируется ли Это =) А когда я объяснил ему все те «трюки» что были употреблены (направленные на производительность программы и наглядность кода), он намекнул мне о трудоустройстве в фирму, где работал сам =)))
Во-первых, согласен с SPU;
Во-вторых, от себя скажу, что сие — бойан: на хабре уже была пара статей, где написано всё тоже самое + ещё некоторые моменты.
И да, мне сейчас 14 и я уже всё это знаю.
Не представляю PHP программисты, который не знает этих основ :-)
Если есть интересные статьи, которые:
— можно (и нужно) перевести с английского на русский =))
— соответствуют тематике Open-Life.org
— желательно, не слишком объемные, я не бэтмен — 10 минут для меня мало =)
То буду рад рассмотреть ваши предложения. Особому вниманию уделяются хорошие статьи по программированию (лично для меня: java, linux, javascript, sql и т.д., но есть и другие люди, которых пивом не угощай — дай что-нибудь перевести =)).
Кстати, подобные вопросы часто задают на собеседованиях, чтобы быстро избавиться от неадекватных претендентов на вакансии php-программистов и т.п.
P.S. Самый лучший путь оптимизации — использовать инструменты по назначению с пониманием того, как они работают, а не чтение советов.
Особенно про циклы и ветвления прикольно — еще в школе проходили =)
(но сокращать статью не хотелось)
Подобные заметки действительно хорошо помогают при освоении особенностей изучаемого языка программирования.
Со мной был интересный случай, после того, как я прочел пару-тройку подобных статей, но для С++ (я — ява-программист, но знаком с широким кругом разнообразных языков). Я пришел сдавать задачи, а преподаватель удивленно спросил, скомпилируется ли Это =) А когда я объяснил ему все те «трюки» что были употреблены (направленные на производительность программы и наглядность кода), он намекнул мне о трудоустройстве в фирму, где работал сам =)))
Во-вторых, от себя скажу, что сие — бойан: на хабре уже была пара статей, где написано всё тоже самое + ещё некоторые моменты.
И да, мне сейчас 14 и я уже всё это знаю.
Не представляю PHP программисты, который не знает этих основ :-)
По-вторых,
Сейчас же подпишу в заголовке, что перевод посвящается матерым php-программистам.
Кстати, Вы не могли бы дать ссылки на эти статьи — и мне интересно, и новички, что наткнутся на эту рады будут =)
— можно (и нужно) перевести с английского на русский =))
— соответствуют тематике Open-Life.org
— желательно, не слишком объемные, я не бэтмен — 10 минут для меня мало =)
То буду рад рассмотреть ваши предложения. Особому вниманию уделяются хорошие статьи по программированию (лично для меня: java, linux, javascript, sql и т.д., но есть и другие люди, которых пивом не угощай — дай что-нибудь перевести =)).
=)