Войти

Показать полную графическую версию : Оптимизация программ на PHP


Vlad Drakula
10-05-2004, 18:54
предлагаю одсудить методы оптимизации прогарамм ны PHP.

так например писать:

$a = "a $i a";

не надо!
надо:

$a = "a ".$i." a";

рвзультат тот же, но вот скорость в 1,5 раза выше!!!

еще один пример:

$a = $a."a";

надо так:

$a .= "a";


скорость возрастает в 3 раза!!!

может кто еще какие приемы знает?


Добавлено:

PS
извеняюсь за громатику в названии :(

vadimiron
10-05-2004, 20:37
Ну например можно ещё так написать:
if ($a<6) echo $a;
Вместо
if ($a<6)
{
   echo $a;
}

При переводе некоторое время тратится на то, чтобы убрать все ненужные пробелы и переносы

Vlad Drakula
10-05-2004, 21:37
vadimiron
ты не прав второй вариант быстрее первого примерно на 1-3 процента!
(сам тестил!)

Guest
11-05-2004, 01:58
Vlad Drakula

Нам на информатике другое рассказывали, правда там было относительно С++, но думаю разницы нет

А можно вопрос как ты тестишь???

------------------------
vadimiron

Исправлено: Prisoner, 2:43 11-05-2004

Prisoner
11-05-2004, 03:12
Вероятно каким-либо profiler'ом...
К слову о функциях: как-то давно читал статью о том, что sizeof() и count(). Так последний на больших массивах медленнее первого на ~10-15%.
(Так... не люблю быть голословным, вот эта статья (http://www.getinfo.ru/article155_1.html) . Тут много еще вкусного).

Vlad, я тебя сильно уважаю, ты не обижайся, но твои посты я без смеха и слез читать не могу :). Топик я еще могу поправить, их мало ;), но будь другом, проверяй перед сабмитом текст, а? :)

vadimiron
11-05-2004, 14:02
Вот ещё пару статей:

http://argon.com.ru/internet/webmastering/phpoptim
http://www.listsoft.ru/articles/349/

Есть также разные утилиты для оптимизации, например:
http://apc.communityconnect.com/
Это так называемый APC-Alternative PHP Cache

Также стоит обратить внимание на базу данных и уметь правильно строить запросы, это тоже повысит скорость приложений, для подсчёта времени, которое тратится на запросы, можно почитать в следущей ссылке:
http://www.codenet.ru/webmast/php/sqltime.php

И ещё одно замечание от меня (и для меня :)): в больших проектах надо учится управлять распределением памяти, это тоже может повысить скорость

Vlad Drakula
11-05-2004, 20:14
Prisoner извеняюсь, буду стараться!

vadimiron
да действительно я ошибся, ты прав!


Добавлено:

vadimiron
спасибо за ссылки, я сейчас все проверю и напишу результаты!

Ginger
11-05-2004, 21:38
Vlad Drakula
так чем ты тестишь скорость?

Vlad Drakula
11-05-2004, 22:58
Ginger
тестирую самим пхп, т.е. запускаю микротаймер.

а в реальности тестирую с помошью WebStress

но том уже совсем други  скорости и оптимизации...
в среднем производительность у меня 300000-400000 страниц в час!
(на таких обемах очень много инрает даже перерисовка програмь и винамп, в разы!!!)

время генерации около 80-90мс.

когда я создавал эту тему то производительнось была на уровне 220000 тсраниц.

Pawel gor
12-05-2004, 16:31
В самам начале было предложено писать
$a .= "a";   вместо   $a=$a."a";
ну тогда аналогично и с
$x+=5;  $y*=3;
ну а про   $i++;  я думаю все знают! (кстати жто тоже на информатике расказывали!)

А на счет тестирования: я так понял Вы программами тестите? А если просто какую либо операцию просто в цикле выполнить много раз и засечь время выполнения, (функция помоему есть, которая до мили секунд время мереет), что-то типа:
......
for($i=1; $i<10000; $i++);{
 $a = "a ".$i." a";}
......
и сравнить с  $a = "a $i a";   Почему бы так не сделать?

Vlad Drakula
12-05-2004, 21:32
Pawel gor
я так и делал!

vadimiron
12-05-2004, 23:20
мне иногда кажется что большая серия из if-ов работает быстрей чем одна строка с регулярным выражением

Vlad Drakula
13-05-2004, 00:07
vadimiron
пример привести можешь?
а то я плохо понял что именно ты имел в виду!

advocat
14-05-2004, 14:06
а как насчет скорости подобного
echo "test ".$var." ... OK";
и
echo "test {$var} ... OK";

что быстрее ? :)

2 Prisoner статья была написана php.spb.ru ...

Vlad Drakula
14-05-2004, 20:11
advocat
первый вариант быстрее и на много!

Prisoner
15-05-2004, 02:57
На основе приведенных выше статей лучше даже так будет:
echo 'test '.$var.' ... OK';

advocat? прости, и что с того? Это же Сеть...


Исправлено: Prisoner, 2:59 15-05-2004




© OSzone.net 2001-2012