Аргерих Л. О языке РНР. Часть 5. Страница 94


Исследование циклов

Целесообразно начать оптимизацию кода с рассмотрения внутренностей циклов, поскольку они выполняются многократно.

Проверьте, не выполняются ли в цикле вычисления или синтаксический анализ строк, и попробуйте вынести их за пределы цикла. Если внутри цик­ла производятся ввод/вывод в файловой системе, попробуйте вынести их на­ружу.

Быстрее прочесть файл целиком в память, чем многократно открывать блок, читать его и закрывать в цикле. Если цикл используется для получения час­тей файла, обычно лучше прочесть файл целиком, а затем удалить ненуж­ные части.

Функция file О - отличный инструмент для работы с текстовыми файлами.

Применение более быстрых функций

Некоторые функции РНР требуют интенсивных расчетов. Обычно можно за­менить их более простыми функциями:

• strstr() вместо ereg()

Если в сценарии нет регулярных выражений, то не нужна и функция е гед - используйте вместо нее st rst г — она быстрее.

str_replace () вместо ereg_replace()

Как и выше, если для операции замены строки не применяется регуляр­ное выражение, то str_replace() эффективнее ereg_replace().

Если регулярные выражения нужны, то следует предпочесть функции PCRE (Perl Compatible Regular Expressions), более быстрые, чем функции РНР егед_* (). Дополнительные сведения можно найти в главе 7.

Выбор лучшего способа вывода данных

Есть три способа вывода контента в броузер:

• Непосредственный вывод

• echo()

• print()

Непосредственный вывод

<?php

echo("Echoing output\n"); print("Printing output\n");

Если не требуется вывод переменных РНР или динамического содержимого, то лучше использовать непосредственный вывод. Он действует быстрее все­го, поскольку РНР не видит и не анализирует такого рода выходные данные.

Выбор лучшего способа ввода данных

Есть три функции, предназначенные для ввода содержимого:

• readfile()

• include()

• require()

Функцию readfile() лучше применять для чтения фрагментов, в которых нет кода РНР. Она действует быстрее, поскольку РНР не проводит синтакси­ческий анализ данных перед их включением. rnciude() и require() анализи­руют файл, чтобы РНР выполнил найденный код. Часто в сценариях РНР ошибочно используют include() для включения заголовков HTML. Пра­вильнее применять для этого

Реже использовать команду echo

Разумно применять команды echo реже, но делать их более длинными. На­пример:

echo("hello \n

this is a test\n

of the echo statement");

быстрее, чем:

echo("hello\n"); echoC'this is a test\n"); echo("of the echo statement");