Оптимизация PHP-кода

Теги: ,

  • Выносите переменные из строк. Примерно так: <php $x=”test”.$test; ?> , это на 25-40% быстрее.
  • Имена переменных должны быть короче 7 символов. Это быстрее на 15%.
  • В массивах не стоит обращаться к элементам по имени и без кавычек. Особенно в многомерных. Сэкономите 40%.
  • А если обращение к элементу массива вынести из строки (как в пункте 1), то можно сэкономить ещё 25-30%.
  • Используйте Perl-ориентированные регулярные выражения. Или хотя бы сравнивайте их с POSIX-аналогами по скорости выполнения. Скорость может отличаться до 200% на разных запросах.
  • SizeOf() быстрее Count(), а в циклах sizeof лучше вообще заменить на переменную, for и while практически не отличимы, для перебора простых индексных массивов нужно использовать for или while, а для ассоциативных массивов - foreach. Плюс 30% при соблюдении.
  • Для чтения файла file() быстрее, чем fopen()+цикл. Ускорение до 40%.
Читать всю статью
Статьи схожей тематики:

Делаем поиск с подсветкой результатов

Neutrino Atomic Edition 0.8.7

Улучшенная система PHP-хуков

Хуки в PHP

Боязнь ссылок

Комментарии(11):

rss-лента

Добавлено: 2008-02-23 19:29:30, Витёк

IMHO, бред, прошлый век для PHP3, экономия на спичках.
А тогда давайте свои скрипты через обфускатор пропускать! Ведь они от этого быстрее будут? Глупость полнейшая!
Хотите повысить производительность - используйте кэширование. Например, результат выполнения тяжелых SQL-запросов сохраняйте во временных файлах.

Добавлено: 2008-02-23 19:31:39, Витёк

Кстати, насчет PCRE вместо POSIX да, согласен.

Добавлено: 2008-02-23 20:47:45, Bolzamo

Согласен, все это понты, но понты приятные. Что мешает просто придерживаться этих правил при написании кода?

Добавлено: 2008-02-23 21:36:12, Витёк

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

Добавлено: 2008-02-23 21:42:07, Витёк

Так, теперь к аргументам:
На счет функций sizeof() и count(), заглянем в руководство (http://php.net/sizeof), там написано: "sizeof — Alias of count()", делаем выводы.
На счет file() или fopen()+цикл, file() целесообразно использовать только тогда, когда нужна получить весь файл сразу, при условии что этот файл небольшого размера, иначе скрипт сожрет много памяти.

Добавлено: 2008-02-23 21:42:12, Bolzamo

Привычка - это вообще ущерб гибкости. Да и зачем привыкать писать кривой код? :)

Добавлено: 2008-02-23 22:04:28, Витёк

Да и зачем учиться писать кривой код? :)

Добавлено: 2008-02-23 22:13:07, Витёк

Провел тест:

<?php

set_time_limit(0);

$var = "1";
for ($start = microtime(true), $i = 0; $i < 100000; $i++) {
$var = "1$var";
}
echo (microtime(true) - $start) . "<br />\n";

$var = "1";
for ($start = microtime(true), $i = 0; $i < 100000; $i++) {
$var = '1' . $var;
}
echo (microtime(true) - $start) . "<br />\n";

?>

Оба метода показывают примерно одинаковые результаты, то первый опережает второго, то наоборот. Версия PHP: 5.2.4

Добавлено: 2008-11-27 10:52:14, tom575

Если подсчитать всю экономию времени, то выйдет, что все сработает еще до Твоего запроса.. Если взять время за 100%, то экономия 395% означает.. что? Да. Что оно все будет раньше выполнятся...

Добавлено: 2008-11-27 12:33:41, Bolzamo

Вы не так поняли. Процент выигрыша показан не относительно всего времени исполнения скрипта, а относительно времени исполнения данной конкретно взятой процедуры, по отношению к которой мы проводим оптимизацию. Например, в первом примере,
$x='test'.$test;
будет работать на 25% быстрее, чем
$x="test$test";
И так далее.

Добавлено: 2010-03-09 13:44:18, woman

www.bolzamo.org.ru - вы лучшие! Спасибо за .htaccess!

Добавить комментарий

Ваше имя:*
Ваш email:*(не публикуется)
Ваш блог:
Ваш комментарий:*

Переносы строк и url-адреса преобразуются автоматически, не забудьте отделить их пробелами. html и bb-коды не поддерживаются.

Аренда коттеджа на выходные для семинаров. Аренда коттеджей на выходные от собственника. Отличная мебель, мебель для спальни Навля. От metalldecor.ru