Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> формирование меню:рефакторинг для ускорения, [Как можно организовать код по-другому] 
:(
    Опции темы
webspec
Дата 24.11.2007, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 24.11.2007

Репутация: нет
Всего: нет



Как можно организовать данный код по другому? Достаточно долго выполняется...

Это вывод меню.

И еще вопрос:

$code=<<<EOF

EOF;

долго обрабатывается?

Код

$main="";
$menu=array();
$menu[0]['name']="Теория";
$menu[0]['link']=array();
$menu[0]['link'][0]=array(101,'Грати','#','descr');
$menu[0]['link'][1]=array(102,'Учеби','#','descr');
$menu[0]['link'][2]=array(103,'Стаи','#','descr');

$menu[1]['name']="Практика";
$menu[1]['link']=array();
$menu[1]['link'][0]=array(201,'Топ','#','descr');
$menu[1]['link'][1]=array(202,'Тес','#','descr');
$menu[1]['link'][2]=array(203,'Разы','#','descr');
$menu[1]['link'][3]=array(204,'Иг','#','descr');
$menu[1]['link'][4]=array(205,'Простги','#','descr');
$menu[1]['link'][5]=array(206,'Теен','#','descr');
$menu[1]['link'][6]=array(207,'Проы','#','descr');

$menu[2]['name']="Аудио и видео";
$menu[2]['link']=array();
$menu[2]['link'][0]=array(301,'Английса','#','descr');
$menu[2]['link'][1]=array(302,'BBC','#','descr');
$menu[2]['link'][2]=array(303,'Аудиого','#','descr');
$menu[2]['link'][3]=array(304,'Скачать','#','descr');
$menu[2]['link'][4]=array(305,'Купить ','#','descr');
$menu[2]['link'][5]=array(306,'Ради','#','descr');


$numb=count($menu);

for($i=0;$i<$numb;$i++){
$main.="<div>".$menu[$i]['name']."</div><ul>\n";
foreach($menu[$i]['link'] as $temp){
if(isset($punkt)){
if($temp['0']==$punkt){
$main.="\n<li><b>".$temp['1']."</b></li>";
} else {
$main.="\n<li><a href=".$temp['2']." title='".$temp['3']."'>".$temp['1']."</a></li>";
}
} else {
$main.="\n<li><a href=".$temp['2']." title='".$temp['3']."'>".$temp['1']."</a></li>";
}
}
$main.="\n</ul>\n<br>";
}

PM MAIL   Вверх
teroni
Дата 24.11.2007, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 15.5.2007
Где: Днепропетровск

Репутация: 8
Всего: 22



Достаточно долго выполняется этот код???
Для интереса проверил у себя - 0.0007 сек в среднем...

Цикл немного подправил бы:
Код

for ($i = 0; $i < $numb; $i++)
   {
   $main .= "<div>".$menu[$i]['name']."</div><ul>\n";
   foreach ($menu[$i]['link'] as $temp)
      {
      if (isset($punkt) && $temp['0'] == $punkt)
         $main.="\n<li><b>".$temp['1']."</b></li>";
      else
         $main.="\n<li><a href=".$temp['2']." title='".$temp['3']."'>".$temp['1']."</a></li>";
      }
   $main.="\n</ul>\n<br>";   

а то 2 одинаковых else зачем-то были - но это мелочь.
PM MAIL   Вверх
Anarki
Дата 24.11.2007, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 7
Всего: 11



Скорее сюда больше подойдет термин Оптимизация Но я думаю, прежде чем оптимизировать, стоит посмотреть на другие причины:
долго выполнятся может такой код лишь из-за того что сервер просто нереально перегружен, либо скорость соединения с хостингом низкая, либо браузер долго рендерит страницы и т.д.
Надо еще делать замеры, ставить в коде таймеры, вначале начала работы проблемного участка кода записать текущее время, а в конце посчитать разницу с настоящим и вывести посмотреть. А можно и профайлером воспользоваться.


--------------------
PM WWW   Вверх
skyboy
Дата 25.11.2007, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(Anarki @  24.11.2007,  22:47 Найти цитируемый пост)
Скорее сюда больше подойдет термин Оптимизация

переименовывал я. начальное название "как можно организовать код по-другому".
Цитата(webspec @  24.11.2007,  17:42 Найти цитируемый пост)
$code=<<<EOF
EOF;

это форма записи. обрабатывается так же, как и "просто" echo. узкое место в другом: как и  при "обычном" echo( при использовании двойных кавычек) имена переменных транслируются в значения, и при использовании конструкции heredoc.
Но, в отличие от варианта с двойными кавычками, не получится сделать так:
Код

$some= "i am the ".$profession;

А парсинг переменных внутри строк довольно сильно будет тормозить процесс. 
PM MAIL   Вверх
webspec
Дата 25.11.2007, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 24.11.2007

Репутация: нет
Всего: нет



ммм..

Смотрите:
Старый проект: http://worldeng.ru
Вроде грузится шустро.
Берем другой проект: http://p1n.ru
Тоже шустро грузится, что имхо грит о том, что хостинг особо не нагружен.

А теперь посмотрите:
http://zzz.worldeng.ru/topics.html

zzz замените на new , не хочу светить поисковикам.

Внизу  можно видеть время выполнения скрипта.

Она варьируется гдет от 0.02 до аж 3..

ужас=(

Дело в том, что пока там никаких других  скриптов нет. Запрос в базу опустим. Он шустро его запрашивает.

Это сообщение отредактировал(а) webspec - 25.11.2007, 01:25
PM MAIL   Вверх
skyboy
Дата 25.11.2007, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(webspec @  25.11.2007,  00:19 Найти цитируемый пост)
Он шустро его запрашивает.

уверен? сам сервер не может быть до ужаса нерационально настроен? может, влияют другие сайты? если меню одно и то же, то очень странно, когда разброс времени выполнения в 150 раз отличается...
PM MAIL   Вверх
Anarki
Дата 25.11.2007, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 7
Всего: 11



Раз в 20 при обновлении такое замедление появляется, мне кажется что это возникает из-за вывода "Случайные топики", либо там запрос кривой к mysql либо еще что.


--------------------
PM WWW   Вверх
webspec
Дата 25.11.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 24.11.2007

Репутация: нет
Всего: нет



Вывод случайных топиков дописал уже позже. Это было до этого.

Код

function lasttopics($nam){
$menu="";
$query1=mysql_query("select * from topics order by RAND() limit $nam") or die(mysql_error());
$menu.="<div>Случайные топики</div><ul>";
while($ar=mysql_fetch_array($query1)){
$menu.="<li><a href=./topic_".$ar['id'].".html title='Топик по английскому языку ".$ar['name']."'><font color=black size=1>".$ar['name']."</font></a></li>";
}
$menu.="</ul><br>";
return $menu;
}


...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0504 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.