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

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

Теги: ,

Статьи схожей тематики:

Предлагаю вашему вниманию...

PHPDL - скрипт для отображения директорий

Print или Echo?

Установка веб-сервера на локальный компьютер

Облако тегов с относительными размерами

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

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

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

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

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