Оптимізація – це процес модифікації системи для поліпшення її ефективності (wikipedia). Так давайте приступимо до справи…

Ні, спочатку прочитайте статтю “Оптимізація програм на PHP”. Читайте, читайте, я почекаю…

Я так розумію ви прочитали і вирішили “оптимізувати” ваш поточний проект? Похвально, тільки перед тим як почати рефакторинг – подивіться скільки часу і пам’яті їсть ваш проект, а тепер вперед – оптимізуємо… Після того як нелегка праця буде закінчений заміримо результати – вражаючий приріст продуктивності – відсотків 5-6% – здивовані? Давайте проаналізуємо трохи поради наведені в цій статті:

Виносьте $змінні з текстових рядків” – прискорення 25-40%
Порахуйте кількість таких рядків у вашому проекті, я думаю їх кількість буде прагнути до нуля, якщо ви використовуєте який-нить шаблонизатор (Smarty).

Короткі змінні не більше 7 символів – прискорення 15%
Читабельність коду від цього не покращиться, я зазвичай називаю змінну по імені об’єкта, що зберігається в ній, а імена об’єктів частенько перевалюють за десяток символів, особливо якщо слідувати стандартам іменування Zend.

Гальмують чи масиви в PHP? Вірніше, як саме. Прискорення 40%
Процитую “Доступ до елементу одновимірного асоціативного масиву по імені, не забраного в лапки”, якщо ви зараз будете так писати – то неодмінно отримаєте Notice. Notice’и гальмують додаток.

Виносьте багатовимірні масиви з текстових рядків” – прискорення 25-30%
Так і читабельність вище буде.

Регулярні вирази: PHP(POSIX) vs Perl. Прискорення 60-200%
Багато у вас в проекті таких? У будь – якому випадку краще уникати регулярок у вузьких місцях.

Цикли: for, foreach, while, count/sizeof() – прискорення 15%-30%
Якщо немає необхідності в foreach використовуйте for.

Для читання файлу file() швидше, ніж fopen+цикл – прискорення 40%
У мене в останніх проектах не так часто доводиться читати файли, а у Вас?

До чого я хилю? Стаття хороша, варто пам’ятати про такий дрібної оптимізації, особливо в “вузьких” місцях. Чому дрібною? Подивіться на результати такої оптимізації – менше 10% приросту швидкості, адже тести продуктивності показані відносні, а якщо перевести в секунди: count() виконується 0.0002 сек., а sizeof 0.00018 – багато ми виграємо? Так що ж необхідно оптимізувати?…

Архітектура
Тут є де розійтися, і почати писати весь проект заново 😉 але краще трохи напилком пошаманити – найчастіше ефект буде вражаючим. Для початку – не підключайте відразу всі бібліотеки використовувані в проекті – все тільки на вимогу. Намагайтеся розділити проект на складові – шаблони проектування ще ніхто не відміняв.

Робота з БД
Дуже багато часу йде на роботу з БД, як сам факт звернення до неї, так і сама вибірка з БД відбувається не моментально. І що ж робити? Необхідно прибирати зайве, де це можливо, а де немає – намагаємося кешувати. І приберіть ж звернення до БД в циклі!

Парсинг XML
У вас є конфігураційний файл у форматі XML і він кожен раз парс? Ой як не добре – давайте будемо це справа кешувати!

Висновок:
1. Витратьте на розробку архітектури проекту трохи більше, ніж пару годинок
2. Приберіть зайві звернення до БД (якщо перший пункт займе у вас кілька днів – то і не з’явиться)
3. Використовуйте кешування даних одержуваних з БД або XML
4. Використовуйте кешування готових HTML сторінок
5. Встановіть какой-нить оптимізатор PHP (XCache або Zend Optimizer)

І ще – десь згадувалося, що сторінка не повинна перейматися більше двох секунд – значить PHP не повинен витрачати більше однієї секунди на її генерацію.