Исследование циклов
Целесообразно начать оптимизацию кода с рассмотрения внутренностей циклов, поскольку они выполняются многократно.
Проверьте, не выполняются ли в цикле вычисления или синтаксический анализ строк, и попробуйте вынести их за пределы цикла. Если внутри цикла производятся ввод/вывод в файловой системе, попробуйте вынести их наружу.
Быстрее прочесть файл целиком в память, чем многократно открывать блок, читать его и закрывать в цикле. Если цикл используется для получения частей файла, обычно лучше прочесть файл целиком, а затем удалить ненужные части.
Функция 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");