![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Black |
|
||||
|
Web-Development ![]() ![]() Профиль Группа: Участник Сообщений: 980 Регистрация: 15.8.2004 Репутация: 7 Всего: 45 |
Значит, этот топик посвещен оптимизации скриптов на PHP. Вот что я могу сказать по этому вопросу:
1) Лучше использовать echo для вывода HTML-кода, чем sprintf. А еще лучше HTML-код выводим за пределами PHP-кода.
2) Нужно попытаться не использовать регулярные выражения, а попытаться найти стандартную функцию языка PHP, а если уж стандартной функции не существует для вашего случая, то тогда лишь использовать рег выражения. 3) Лучше сравнение большого количества информации проводить через массивы. Например, когда вы из введенного пользователем текста отсеиваете коды смайликов, заменяя их (коды) на пути к картинкам. В данном случае через массивы будет намного быстрее, чем просто в наглую менять в строке коды по очереди, тогда и скрипт зазрастется до невиданных размеров, т.к. строк будет много, а здесь сравнение в одну строку (не считая конечно задания самого массива данных). 4) Для многократных операций используем циклы for, while, для операций с большим количеством условий используем switch-case. 5) Используем только БД, например MySQL. Забудем о файлах. Причины: слишком большой код, много глюков, возможность совершить ошибку и наконец слишком это все муторно. Плюсы БД: быстро, легко, удобно, понятно, нет глюков (если сам их не сделаешь). 6) Чем меньше переменных в скрипте, тем меньше требуется памяти. Поэтому если переменная больше не нужна, а дальше по ходу скрипта необходима еще новая переменная, то присваимаем ей имя предыдущей. Так мы экономим память сервера :-) И нас возножно не выкинут с хостинга за нагрузку. 7) Еще я так понимаю, чем меньше размер скрипта (в Кб), тем быстрее он работает, т.к. PHP проходит по всем строчкам и чем их меньше, тем быстрее выполниться скрипт. Например (условие скрипта: должен быть выполнен только один код в {} все остальные должны вернуть false, т.е. не пройдет проверка на сравнение, т.е. у нас в скрипте, как бы вложенные модули, которые активируются в зависимости от $что-то):
Я так понимаю, что данный скрипт будет выполняться дольше, чем если бы мы эти модули (т.е. те действия которые происходят за {} после проверки равенства) мы разместили в отдельных файлам и файл бы занимал не 100 КБ, а например только 20 Кб. Если я не прав, то поправьте меня. Жду ваших предложений об оптимизации скриптов. Это сообщение отредактировал(а) PHP-DIRECTOR - 7.12.2004, 00:08 -------------------- Могу все, но ничего не умею :-) |
||||
|
|||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
1. Один раз print или echo для сгенерированной переменной. В переменной - весь гипертекст страницы.
2. Тут можно долго распинаться... Да, если можно сделать что-то без рэгов, то лучше делать без них, а если и делать, то предпочтительнее Perl регулярки. Быстрее тобишь. 3. Не совсем понял... Если ты заменяешь смайлы, к примеру, то ИМХО оптимальный вариант это - рэгом достаем все смайлы, тобишь :<smile>: (берем уникальные), берем это в массив, и заменяем в цикле, но заменяем рэгами и с использование call_back функции, которая будет возвращать путь к файлу... 4. А как иначе-то 5. yes it is... 6. Само собой... но скажем так... Использование переменных должно быть разумным... 7. Ну в принципе да, но я бы все-таки на размер файла не обращал внимания, поскольку слишком большой - является следствием большого объема, кода, а следовательно не до конца продуманного алгоритма или его левой реализацией.
Да, но так надо делать для моделей.. Чем меньше файлов подключаешь, тем быстрее... от себя хочу добавить, что if лучше бывает заменить на $var = ( <expr> ) ? true : false; И еще, лучше не делать лишнего с возвращаемыми значениями функциями... тобишь: $test = "asda"; return $test; Лучше: return "asda"; |
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
1) Я например ваще Smarty юзаю
|
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
1) Юзаю свой шаблонизатор
2) Еще добавлю, что если без них не получается, можно попробовать пересмотреть задачу, и возможно найдется другое, более мудрое решение поставленной задачи. 3) Смайлы? Это ты о чем? Как на этом форуме? Тогда проще всего юзать такой код (100% экономия производительности):
Добавлено @ 09:33 На счет остального согласен, но на счет 7го пункта неуверен. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| Secandr |
|
||||||||||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
Если у тебя большой код, то он становится совершено нечитабельным и исправить ничего нельзя!
Если стандартной функции не существует нужно ещё раз подумать, может всё таки регулярные выражения не нужны...
нельзя так катигорично утверждать, файлы тоже очень удобны... Особено если нет денег на платный хостинг
не пробовал, так что тяжало сказать. Ещё полезно чистить переменые до и после испоьзования.
|
||||||||||
|
|||||||||||
| skalex |
|
|||
|
Хороший человек ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 895 Регистрация: 2.4.2004 Репутация: 8 Всего: 23 |
Было бы неплохо, чтобы кто-нибудь высказал свои соображения по поводу объектно-ориентированных особенностей php...
|
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
По большому счёту ловля блох. Имя переменной это просто запись в хештаблице, присвоишьновое значение, память будет выделенна по новой.
Кто знает как работают реги, тот знает, что они работают очень быстро, почти с такой же скоростью как и простое сравнение(количество итераций переход. к следущь. символу), только памяти больше уходит.
Не очень хорошо, лучше использовать стандартную буфферизацию, а еще лучше сделать стандартный буффер в 2-4 кб, что бы уходило постепенно. Хорошая оптимизация будет если скомпилированный скрипт оставить в памяти, тогда при следующем запросе он компилироватся по новой не будет. Для этого есть различные приблуды к PHP, в том числе и бесплатные. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Mal Hack |
|
||||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Я тебя не совсем понял по поводу буферизации. что конкретно ты имеешь ввиду? ob_*(); ?? А зачем нагружать сервер и несколько раз делать отправку... ИМХО лучше один раз но все...
А можно дать линк на эти приблуды?
Тут два основных момента... 1. ООП надо применять там где оно реально нужно, т.е. для движков или систем, для маленьких скриптиков применение ООП, скажем так, просто не имеет смысла. 2. При рациональном использовании объектов и их грамотной структуре можно добиться, что скрипт будет работать быстрее, чем с применением функций... Но все упирается в грамотное использование ООП. Это сообщение отредактировал(а) Mal Hack - 7.12.2004, 15:25 |
||||||
|
|||||||
| Black |
|
|||
|
Web-Development ![]() ![]() Профиль Группа: Участник Сообщений: 980 Регистрация: 15.8.2004 Репутация: 7 Всего: 45 |
Кто знает, а существуют ли какие-нибудь программы, проверяющие код PHP и дающие советы по оптимизации кода или что-то в этом роде ????
-------------------- Могу все, но ничего не умею :-) |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
таких вроде нет...
Есть программы, которые на стороне сервера позволяют PHP скриптам выполняться быстрее: Zend Optimizer, Turck MMCache. |
|||
|
||||
| Black |
|
|||
|
Web-Development ![]() ![]() Профиль Группа: Участник Сообщений: 980 Регистрация: 15.8.2004 Репутация: 7 Всего: 45 |
Zend Optimizer - платный??? а вот Turck MMCache я не смог установить, может где-нибудь есть описание установки ???
-------------------- Могу все, но ничего не умею :-) |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
||||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
||||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
Сам же привёл пример: http://sourceforge.net/projects/turck-mmcache/ Сохраняет скомпилированный скрипт в памяти, затем это скрипт по новой не компилируется -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Хм... Значит я не так понимал, как эти вещи работают.. Сенкс за просвящение
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |