36 советов. Как писать быстрые PHP скрипты - Visavi.net
https://visavi.net/
RSS - Visavi.nethttps://visavi.net/assets/img/images/logo_small.pngRSS - Visavi.net
https://visavi.net/
[email protected] (admin)[email protected] (admin)Sun, 22 Dec 2024 23:13:14 +0300<blockquote class="blockquote"><strong>Azzido</strong> (12 Июля 2010 / 21:44)<br>
В статьи это лучше добавь, да и не согласен, что не уделяется внимание оптимизации... Кстати, вот за эту мысль<br>
if (!isset($password{8})) { <br>
echo 'Your password is too short.'; <br>
}<br>
спасибо, хорошая идея, не приходило в голову что можно длину не измерять, но кстати тут оговорочка, для текста, где используется например utf-8 и длина измеряется mb_strlen например, такое проблемно сделать, так что наверно это отпадает.<br>
И кстати, mod_gzip не определяет поддерживает ли браузер сжатие, так что лучше это с помощбю ob_gzhandler делать</blockquote>
ну статьи,так статьи <img src="https://visavi.net/uploads/stickers/smile.gif" alt="smile">
https://visavi.net/topics/11490/203030
36 советов. Как писать быстрые PHP скрипты XoPyCMon, 12 Jul 2010 21:47:54 +0400Сообщенияhttps://visavi.net/topics/11490/203030<span style="font-size:large">хех, вроди все))))) </span><img src="https://visavi.net/uploads/stickers/krut.gif" alt="krut">
https://visavi.net/topics/11490/203027
36 советов. Как писать быстрые PHP скрипты XoPyCMon, 12 Jul 2010 21:45:01 +0400Сообщенияhttps://visavi.net/topics/11490/203027В статьи это лучше добавь, да и не согласен, что не уделяется внимание оптимизации... Кстати, вот за эту мысль<br>
if (!isset($password{8})) { <br>
echo 'Your password is too short.'; <br>
}<br>
спасибо, хорошая идея, не приходило в голову что можно длину не измерять, но кстати тут оговорочка, для текста, где используется например utf-8 и длина измеряется mb_strlen например, такое проблемно сделать, так что наверно это отпадает.<br>
И кстати, mod_gzip не определяет поддерживает ли браузер сжатие, так что лучше это с помощбю ob_gzhandler делать
https://visavi.net/topics/11490/203024
36 советов. Как писать быстрые PHP скрипты AzzidoMon, 12 Jul 2010 21:44:07 +0400Сообщенияhttps://visavi.net/topics/11490/203024Не стоит использовать ООП там где без него можно обойтись. Создание объектов и обращение к их методам создают дополнительную нагрузку.<br>
Не стоит создавать классы в качестве контейнеров для данных. Массивы прекрасно справляются с этой задачей.<br>
Не создавайте слишком много методов (хотя само по себе количество методов не отражается на времени обращения к каждому отдельному методу – быстрее будет работать тот скрипт, который использует меньшее количество вызовов.<br>
По возможности используйте те функции, которые уже есть в языке PHP.<br>
Если в вашем коде есть функции, которые сильно нагружают систему, подумайте – может есть смысл переписать их на C и подключить как расширение?<br>
Используйте профайлер во время отладки кода. Он покажет вам самые узкие места в вашей программе.<br>
Установите mod_gzip. Этот модуль Апача сжимает данные на лету и может уменьшить объем передаваемых данных на 80%<br>
<br>
Фух, хватит на сегодня <img src="https://visavi.net/uploads/stickers/klass.gif" alt="klass">
https://visavi.net/topics/11490/203019
36 советов. Как писать быстрые PHP скрипты XoPyCMon, 12 Jul 2010 21:38:36 +0400Сообщенияhttps://visavi.net/topics/11490/203019Не используйте функции там, где можно использовать встроенные конструкции языка PHP. Например, вместо <br>
<pre class="prettyprint">
if (strlen($password) < 8 ) {
echo 'Your password is too short.';
}
</pre>
можно написать:<br>
<pre class="prettyprint">
if (!isset($password{8})) {
echo 'Your password is too short.';
}
</pre>
Постинкремент ($i++) намного медленнее чем преинкремент (++$i). Это связано с особенностями реализации языка PHP. Постинкремент создает одну временную переменную, в то время как постинкремент изменяет саму переменную непосредственно. Примечание: известно, что использование Zend Optimizer устраняет этот недостаток. Но, поскольку Зенд Оптимайзер установлен не на всех хостингах, лучше учесть этот момент во время создания скрипта… <img src="https://visavi.net/uploads/stickers/smile.gif" alt="smile">
https://visavi.net/topics/11490/203017
36 советов. Как писать быстрые PHP скрипты XoPyCMon, 12 Jul 2010 21:37:56 +0400Сообщенияhttps://visavi.net/topics/11490/203017Если в строке не используются имена переменных, то лучше использовать одинарные кавычки, чем двойные (не тратится время на поиск переменных в строке).<br>
При выводе нескольких строк при помощи echo лучше перечислить их через запятую чем использовать конкатенацию.<br>
Веб-серверу Apache потребуется как минимум в два раза больше времени чтобы отдать по запросу скрипт php, чем статичную страницу html.<br>
PHP скрипты заново компилируются при каждом обращении к ним. Установите какое-нибудь кеширующее расширение на сервер (например, eAccelerator) – обычно это увеличивает производительность в 1-10 раз.<br>
Включайте кеширование везде где это возможно. Используйте такие программы как memcached – высокопроизводительная система кеширования, предназначенная для увеличения производительности динамических веб-приложений, которое достигается за счет снижения нагрузки на базу данных.<br>
Если нужно определить длину строки – используйте strlen(). Эта функция работает очень быстро потому что на самом деле она не выполняет подсчет символов. Она берет уже готовый результат из структуры zval (внутрення C-структура, которая используется для хранения переменных в PHP).
https://visavi.net/topics/11490/203016
36 советов. Как писать быстрые PHP скрипты XoPyCMon, 12 Jul 2010 21:36:51 +0400Сообщенияhttps://visavi.net/topics/11490/203016Инкремент (i++) для локальной переменной выполнится в два раза быстрее чем для глобальной.<br>
Инкремент для свойства объекта ($this->property++) выполняется в три раза медленнее чем для простой локальной переменной.<br>
Инкремент для неинициализированной переменной будет выполняться в 9-10 раз дольше чем для инициализированной.<br>
Одно только объявление глобальной переменной, которая в дальнейшем не используется, также замедляет работу (отнимает приблизительно столько же времени сколько и инкремент локальной переменной.<br>
Методы из классов-потомков вызываются быстрее чем из классов-предков. (Мораль – не создавайте без нужды громоздкую иерархию классов.)<br>
Вызов одной функции с передачей одного аргумента (тело функции пустое) занимает столько же времени сколько и 7-8 инкрементов для локальной переменной. Вызов такого же метода отнимет время равное 15 инкрементам.
https://visavi.net/topics/11490/203015
36 советов. Как писать быстрые PHP скрипты XoPyCMon, 12 Jul 2010 21:36:15 +0400Сообщенияhttps://visavi.net/topics/11490/203015switch() работает быстрее чем конструкции вида <br>
<pre class="prettyprint">
if(...) {...} elseif (...) {...} elseif (...) ... </pre>
Подключите модуль апача – mod_deflate.<br>
Закрывайте неиспользуемые соединения с базой данных.<br>
Ошибки, которые возникают при работе скрипта, тоже замедляют работу. Старайтесь их избегать <br>
Не используйте функции при определении цикла. Пример: <br>
<pre class="prettyprint">
for ($i=0; $i < count($longlongarray); $i)
</pre>
Функция count() будет вызываться при каждой итерации массива.
https://visavi.net/topics/11490/203013
36 советов. Как писать быстрые PHP скрипты XoPyCMon, 12 Jul 2010 21:35:28 +0400Сообщенияhttps://visavi.net/topics/11490/203013Избегайте “магических” методов (__get, __set и пр.)<br>
В вызовах include и require лучше использовать полный путь к скрипту.<br>
Если вы хотите измерить время работы скрипта, то лучше использовать $_SERVER[’REQUEST_TIME’] чем time()<br>
Заменяйте regex() на strncasecmp, strpbrk и stripos.<br>
Если функция принимает аргументы как в виде массива, так и отдельные переменные, то быстрее будет вызывать ее несколько раз, чем передавать сразу все значения в виде массива.
https://visavi.net/topics/11490/203011
36 советов. Как писать быстрые PHP скрипты XoPyCMon, 12 Jul 2010 21:34:35 +0400Сообщенияhttps://visavi.net/topics/11490/203011По возможности объявляйте методы как статические. Они вызываются в 4 раза быстрее.<br>
echo быстрее чем print<br>
Быстрее вызвать echo с несколькими аргументами – строковыми переменными – чем сначала склеивать их в одну.<br>
Устанавливайте максимальное значение для счетчика цикла for вне цикла.<br>
Выполняйте unset для ненужных больше переменных. Особенно это касается больших массивов.
https://visavi.net/topics/11490/203008
36 советов. Как писать быстрые PHP скрипты XoPyCMon, 12 Jul 2010 21:33:46 +0400Сообщенияhttps://visavi.net/topics/11490/203008Странно, что в русскоязычном интернете так мало внимания уделяется оптимизации быстродействия пхп-скриптов… Может быть, те кому важно быстродействие, вообще не пишут на пхп? Шутка Пожалуй, буду исправлять ситуацию… и начну с публикации этой небольшой подборки советов. Перечисленные в ней факты следует знать каждому пхп-программисту, который собирается писать скрипты хоть немного сложнее чем форма обратной связи на сайте
https://visavi.net/topics/11490/203007
36 советов. Как писать быстрые PHP скрипты XoPyCMon, 12 Jul 2010 21:33:33 +0400Сообщенияhttps://visavi.net/topics/11490/203007