Купи доменное имя для своего блога, персональной web-странички или нового интернет проекта по выгодным ценам. Зарегистрировать домен в зоне .РФ или .RU за 195 руб.

Оптимизация PHP

Недавно занялся трассировкой кода, дабы найти “бутылочные горлышки” и был очень удивлён и обескуражен от результатов. Итак по порядку.

  1. Первое оказалось вполне логично — это функции, любой вызов функции — зло. А значит использование таких функций как array_push($a, ‘hi’) лучше заменять на конструкцию типа $a[] = ‘hi’; работает в несколько раз быстрее, раза в 3. Тоже касается про всякие функции типа is_null. Что эе касается функции empty — то её лучше вообще не использовать, если это реально не необходимость. Она проверяет на null, false, пустую строку и 0. А вот что меня удивило так это функция define — я всегда пологал что это мета-функция и не является реальной функцией, но по трейсам видно, что это происходит реальный вызов функции. Тоже можно сказать и с echo — пусть это не эстетично, но лучше вставить “?>” “<?php” чем пару раз echo. Но echo быстрее чем print, так как не возвращает результат.
  2. “Переменные в строках”, красиво использовать конструкции типа
    echo "Hello {$name}";
    но как правило — это работает значительно медленнее, чем
    echo 'Hello '.$name;
    или даже так
    echo 'Hello ', $name;
    что освобождает интерпритатор от конкатинации строк.
  3. Ещё одной темой была функция foreach — она работает медленнее чем циклы for или while. Говорят проблема в том, что создаётся копия массива, и это можно обойти с помощью передачи по ссылке
    foreach ($arr as $k => &$v) { ... }
  4. preg* работают почти всегда намного быстрей чем ereg
  5. Если вы используете кеширование промежуточного кода, как например APC, и используете include($filename), а именно паередавая переменную в качестве аргумента функции include, то этот include а памяти не будет кэшироваться. Может это и специфика моей версии APC, если что, дайте знать :-) А то так, что паттерн Factory, что тупо autoload идёт на смарку.
  6. и напоследок, никогда не изобретайте велосипеды, используйте встроенные функции языка

Регистрация доменов .РФ или RU за 195р!!!
Совместно с регистратором onreg.ru мы проводим акцию! Купи домен для своего блога или нового интернет проекта по выгодным ценам. Так домен в зоне .RU или .РФ стоит всего 195 рублей. При покупке нескольких доменов, возможны скидки. На onreg.ru есть система тикетов, через которую мы всегда готовы ответить на все ваши вопросы и предложения.


Комментарии
  • Странный чел — 19.08.2007 #1
    Хорошо бы написать продолжение :-)
  • KID — 19.08.2007 #2
    Для какой версии PHP рассматривалось? Интересует также настройки PHP, в частности защищенный режим или нет?
  • BlackCat — 19.08.2007 #3
    Это справедливо как для 4ой, так и для 5ой версии php. Например foreach был проблемой в 4ом php но в пятом для этого сделали возможность передавать по ссылки. А так, большинство пунктов справедливы для всех интерпретируемых языков.
  • Артур — 26.01.2012 #4

    Советую прочитать отличную книжку про оптимизацию PHP http://it-ebooks.info/book/412/»>Pro PHP Application Performance (на английском)

Оставить комментарий
Ваше имя:
E-mail:
Сайт (блог):
Сообщение:
Если вы не робот, введите код: