Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: сравнение алгоритмов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
SAD
Отправлено: 05 Июля, 2010 - 18:33:09
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




есть вопрос, что быстрее будет, если размерность массивов будет больше 30
первый алгоритм
PHP:
скопировать код в буфер обмена
  1. for ($j = 0; $j < sizeof($ids_) - 1; $j++) {
  2.     if ($ids_[$j] > $ids_[$j+1]) {
  3.         $k = $ids_[$j];
  4.         $ids_[$j] = $ids_[$j+1];
  5.         $ids_[$j+1] = $k;
  6.         $z = $text[$j];
  7.         $text[$j] = $text[$j+1];
  8.         $text[$j+1] = $z;
  9.     }
  10. }
  11. $p = 0;
  12. $query = mysql_query("SELECT * FROM test WHERE id IN ({$ids}) ORDER BY id");
  13. while ($res = mysql_fetch_array($query)) {
  14.     ....................
  15. }


второй алгоритм
PHP:
скопировать код в буфер обмена
  1. for ($i = 0; $i < sizeof($text['masresult']); $i++) {  
  2.   $query = mysql_query("SELECT * FROM test WHERE id={$ids[$i]}");
  3.   $test = mysql_fetch_array($query);
  4.   }
  5. }


для 3 записей немного быстрее первый. Но при большом количестве записей не будет ли тормозить первый алгоритм из - за сортировки?
 
 Top
Champion Супермодератор
Отправлено: 05 Июля, 2010 - 18:39:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




SAD пишет:
опрос, что быстрее будет
Ты же знаешь, что как найти ответ на такой вопрос. Во втором случае запрос в цикле и вызов функции с результатом, который достаточно вычислить один раз.
 
 Top
EuGen Администратор
Отправлено: 05 Июля, 2010 - 18:39:53
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Однозначно первый. В нем выборка будет IN RANGE а сортировка по первичному ключу.
Второй же потратит уйму времени на соединение с БД в общем случае. Если запросы кэшируются - разница будет видна при еще большем числе массивов.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
SAD
Отправлено: 05 Июля, 2010 - 18:42:57
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




Champion пишет:
Ты же знаешь, что как найти ответ на такой вопрос.

Знаю, но лень забивать много записей )). Я так, навскидку спросил, у мну сомнения по поводу сортировки были. Не будет ли она замедлять больше, чем выборка n раз
 
 Top
EuGen Администратор
Отправлено: 05 Июля, 2010 - 18:45:19
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Если Вы знаете, как в БД устроены индексы, то вопрос о сортировке несколько странный (по сути индекс уже построен, куда там еще сортировать)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
SAD
Отправлено: 05 Июля, 2010 - 18:47:53
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




Сортиовка мне нужна, чтобы по первому массиву отсортировать второй
http://forum.php.su/topic.php?fo...1&topic=4304 . У меня там взаимооднозначность
 
 Top
Champion Супермодератор
Отправлено: 05 Июля, 2010 - 19:11:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Какая разница для чего она нужна? Это на ее скорость не влияет)
 
 Top
JustUserR
Отправлено: 06 Июля, 2010 - 15:21:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




SAD В любом случае какой бы вид сортировки или зависимой выборки вы не использовали - вариант с SQL-запросом в цикле всегда будет более медленным не только по причине того что требуется время на инициацию соединения - но в особенности из-за того что сортировка и выборка внутри БД происходит значительно быстрее из-за наличия поисковых индексов и более эффективных алгоримтов В некоторых случаях имеет смысл даже переместить логику целиком на сервер БД путем написания SQL-функции - как правило такой метод будет работать значительно эффективнее чем при дополнительно взаимодействии с сервером приложений


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB