FAQ по оптимизации PHP-скриптов

1 234
[Удален]
#21
Зингельшухер:
+100

Я на своем опыте заметил, что для WEB (простой сайт, новости, статьи, гостевуха, или даже блог) вообще не нужно ООП а исполняемые за раз скрипты в 99% случаях занимают 2-3кб
(при полной готовой к использованию CMS в 10-15кб не считая дизайна...)

По сути сайт (не сервис какой нибудь, а тупо информационный сайт) это лишь FrontEND для 2-3 таблиц БД

Тебе нужно вывести на страницу 10 записей из таблицы по одному шаблону. Ты же используешь функцию, правда? А если нужно вывести 2000 записей в разные блоки и в разные шаблоны? Ты напишешь например 2 функции, или 4, или 10. В то время как можно сделать полиморфный класс и уменьшить время выполнения процентов на 5-10, пусть пожертвовав немного памятью сервера. Нет, что ни говори, а ООП вещь хорошая, если используется с умом.

Progr@mmer\.
На сайте с 14.10.2007
Offline
44
#22
peterpro:
Во-первых - не стоит оптимизировать раньше времени. Если все работает нормально, то скрипт лучше вообще не трогать. Т.е. задачу оптимизации надо решать по мере поступления.

Вспомнился случай из жизни:

Клиент: а как оно работает?

Продавец: не знаю...

Клиент: можно исходный код посмотреть?

Продавец: не надо, а то мало ли потом перестанет...

Вашей девушке не хватает романтики? Черпните её на сайте «Я Люблю Романтику» (http://iloveromantics.ru/). Романтический форум (http://forum.iloveromantics.ru/) для отдыха от нудной работы.
[Удален]
#23
neolord:
ООП вещь хорошая, если используется с умом.

Да, если с умом то хорошая, но в WEB-программировании практически не нужная... (я говорю про сайты, а не какие-то сложные системы)

edogs software
На сайте с 15.12.2005
Offline
775
#24
neolord:
Реально имеет смысл оптимизировать алгоритмы а не выигрывать 0.00001 секунду заменяя count на sizeof. Если речь конечно идет именно о сайтах.

+1. И даже по еще 2 причинам.

а) Всякие zend optimizer-ы нередко сами заботятся о многих упомянутых вещах.

б) От версии к версии результаты бенчмаркинга бОльшей части упомянутых вещей могут менятся с точечностью до наоборот.

neolord:
Если же это некое сложное web-приложение (например поисковая система), то там уже и экономия на спичках даст хороший вес.

0. Реально нагрузочные приложения выполнять на php грешно, их даже экономия на спичках не спасет. Для них есть c/c++, по крайней мере для узких мест, что кстати в статье упомянутой ТС в первом посте сказано.

neolord:
По теме могу сказать, что очень хороший прирост производительности дает правильное использование ООП. Например взять тот же форум PHPbb - одни сплошные классы и в итоге весьма медлительный двигун.

Заблуждаетесь:) Классы это тормоза, как раз отказ от них дает хороший прирост производительности. "Классный" код по сравнению с функциями в пхп имеет честь занимать в 3-5 раз больше памяти и кушать в 2-3 раза больше процессорного времени при прочих равных. Так что уж из-за чего чего, а из-за производительности программинг на классах выбирать не стоит, для его выбора есть другие причины. Тестировали не раз и не два и по 4-ой версией и под 5-ой, так что для нас вывод однозначен.

peterpro:
По моему сугубому мнению, все эти шаманства с print/echo, for/foreach причем с отрывом от контекста задачи дают такой же выхлоп, как и гадание на кофейной гуще.
Во-первых - не стоит оптимизировать раньше времени. Если все работает нормально, то скрипт лучше вообще не трогать. Т.е. задачу оптимизации надо решать по мере поступления.
Второе - надо оптимизировать не функцию/оператор, а саму логику приложения. Если начало тормозить - ставим счетчики, замеряем время, ищем "подозрительный" кусок, и только тогда начинаем править.
Третье - чаще всего тормоза - это перенормализованные БД, кривые запросы к ней же, неэкономичные алгоритмы обходов, но никак не конкатенация и прочая мелочевка :)

+1

В целом не считаем что на php в прямом смысле есть задачи оптимизации скриптов как таковой. У нас вот 90% задач по "оптимизации" это исправление кривого кода, а не ускорение правильного в целом кода. Не можем представить себя сидящих и переписывающих $i++ на ++$i и на полном серьезе гордящимися результатом:)

Плюс есть еще один момент. Все эти "хитрости" они хороши если над проектом работает один человек, а вот если их несколько, то куда более важно сохранять единый стиль кода, относительно всем привычный и стандартный, а не выкраивать миллисекунды.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
[Удален]
#25
edogs:

Реально нагрузочные приложения выполнять на php грешно, их даже экономия на спичках не спасет. Для них есть c/c++, по крайней мере для узких мест, что кстати в статье упомянутой ТС в первом посте сказано.

Нагрузочные на что? Я имею ввиду не фронт-енд, а бэк-енд, который используется для ручной корректировки поискового индекса. Я сам писал поисковик, который парсит раз в 12 часов 70 сайтов туроператоров, сгружает с них новые прайсы в XML/XLS, разбирает их, синонимизирует и после проверки оператором вносит в базу. И писать это на си не было никакой возможности по ряду технических причин. Вот тут использование всяких "фич" интерпретатора PHP дало бонус процентов в 20%.

edogs:

Классы это тормоза, как раз отказ от них дает хороший прирост производительности. "Классный" код по сравнению с функциями в пхп имеет честь занимать в 3-5 раз больше памяти и кушать в 2-3 раза больше процессорного времени при прочих равных. Так что уж из-за чего чего, а из-за производительности программинг на классах выбирать не стоит, для его выбора есть другие причины.

Не совсем верно. Под каждый экземпляр класса конечно выделяется память, в отличие от инклюдов и функций, но что до процессорного времени - при многопоточности приложения (когда более 5-10 экземпляров одного класса используется в одном сеансе вызова апача) скорость обработки и выдачи данных классами (при грамотной структуре, конечно) больше чем аналогичный показатель для подпрограмм и инклюдов. Т.е. создание класса требует порядком процессорного времени, но в дальнейшем вызовы его методов проходят быстрее чем вызов подпрограмм, а уж тем более include

[Удален]
#26
neolord:
Я сам писал поисковик, который парсит раз в 12 часов 70 сайтов туроператоров, сгружает с них новые прайсы в XML/XLS, разбирает их, синонимизирует и после проверки оператором вносит в базу. И писать это на си не было никакой возможности по ряду технических причин.

Это не делает вам чести. Я бы такой поисковик просто отказался бы писать (если уж нет возможности написать его "нормально" то уж лучше никак чем "тяп-ляп")

BrokenBrake
На сайте с 03.03.2007
Offline
194
#27
Николай В.:
Оптимизация, основанная на выборе тех или иных функций, мне кажется экономией на спичках. Сейчас гораздо проще купить более мощные железки/канал, чем тратить время на оптимизацию, которая даст копеечное ускорение.

Во, уверен, человек отлично бы влился в команду Microsoft. Работал бы над Vista 2.0, которая потребует всего лишь гигабайт тридцать места на винчестере и столько же оперативной памяти. Хороший подход! Современный.

[Удален]
#28

Это из серии

А как правильно написать программу на си:

void main() {
asm {
...

😂

BrokenBrake
На сайте с 03.03.2007
Offline
194
#29

Кстати, вот кое что из моих закладок:

21 ошибка программиста PHP. На мой взгляд, отличнейшая статья. Не раз возвращался к ней.

Полезные мелочи программирования на PHP. Тоже намотал на ус кое что.

40 советов по оптимизации вашего PHP-кода. Как обычно, на «хабре» комментарии иногда интереснее, чем сама заметка.

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#30
BrokenBrake:
Во, уверен, человек отлично бы влился в команду Microsoft. Работал бы над Vista 2.0, которая потребует всего лишь гигабайт тридцать места на винчестере и столько же оперативной памяти. Хороший подход! Современный.

Да можно было бы это пережить, если бы то что они создали работало быстрее, чем ОС ниже класса, а получается оборот кушает много, но зачем... никто не знает 🙄

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
1 234

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий