Статья 2.

Здесь мне хотелось бы немного коснуться оптимизации.

1. Выносите за пределы цикла инструкции, которые не будут меняться на протяжении всего цикла! Этот приём используется и в языках программирования высокого уровня, но в PHP, где циклы выполняются НАМНОГО медленнее, выходит едва ли не на первое место.
Пример:
for ($i=0; $i<filesize('base.txt'); $i++) ;
Делаем так:
$a= filesize('base.txt');
for ($i=0; $i<$a; $i++) ;

2. НИКОГДА НЕ использовать регулярные выражения, если аналогичный код можно выполнинить с помощью стандартных строковых функций PHP!
Пример:
// требуется заменить все 1 на x
$a= '0123456789';
$a= str_replace('1', 'x', $a); // наивысшая скорость
$a= ereg_replace("1", "x", $a); // выполнится в 1.5 раза медленнее
$a= ereg_replace("[^023456789]", "x", $a); // в 4.3 раза медленнее!!!

3. В строковых переменных PHP используются ' (апострофы) и " (кавычки). Основное отличие: переменные, заключённые в кавычки, интерпретируются, в то время, когда строка в апострофах выводится как есть.
Пример, чтобы стало понятно:
$a= "Привет Вам!";
echo "$a"; // PHP выведет строку Привет Вам!
echo '$a'; // выведет $a
Как следствие, строки, заключённые в апострофы, выполняются быстрее. Поэтому применяйте апострофы везде, где можете, и не прогадаете. :)

4. Очень элегантный приём, "побочным" эффектом которого является повышению удобочитаемости текста: Вынесение переменных ЗА КАВЫЧКИ!
Пример:
$a= "Привет";
echo "$a Вася!"; // выведет строку Привет Вася!
echo $a." Вася!"; // тоже выведет строку Привет Вася!, но немного быстрее
Для максимальной скорости делаем так:
echo $a.' Вася!'; // Привет Вася! Самый быстрый из 3 вариантов)

5. Не следует использовать слишком длинные имена переменных.
Пример:
$ItsMyCycleVariable= 1; // не желательно в случае большого скрипта и частого использования данной переменной
$i= 1; // так лучше
Тоже качается и массивов:
$MyArray['ItsMyCycleVariable']= 1; // нужно пытаться так не делать
$MyArray['i']= 1; // это побыстрее будет
---
P.S.: В общем-то, оптимизация - это отдельная громадная тема. Возможно, я к ней вернусь позже.
- - - - -
Данная статья разрешена для публикации только на http://visavi.net/