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
Форумы портала PHP.SU :: Версия для печати :: сравнение алгоритмов
Форумы портала PHP.SU » PHP » Программирование на PHP » сравнение алгоритмов

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

1. SAD - 05 Июля, 2010 - 18:33:09 - перейти к сообщению
есть вопрос, что быстрее будет, если размерность массивов будет больше 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 записей немного быстрее первый. Но при большом количестве записей не будет ли тормозить первый алгоритм из - за сортировки?
2. Champion - 05 Июля, 2010 - 18:39:39 - перейти к сообщению
SAD пишет:
опрос, что быстрее будет
Ты же знаешь, что как найти ответ на такой вопрос. Во втором случае запрос в цикле и вызов функции с результатом, который достаточно вычислить один раз.
3. EuGen - 05 Июля, 2010 - 18:39:53 - перейти к сообщению
Однозначно первый. В нем выборка будет IN RANGE а сортировка по первичному ключу.
Второй же потратит уйму времени на соединение с БД в общем случае. Если запросы кэшируются - разница будет видна при еще большем числе массивов.
4. SAD - 05 Июля, 2010 - 18:42:57 - перейти к сообщению
Champion пишет:
Ты же знаешь, что как найти ответ на такой вопрос.

Знаю, но лень забивать много записей )). Я так, навскидку спросил, у мну сомнения по поводу сортировки были. Не будет ли она замедлять больше, чем выборка n раз
5. EuGen - 05 Июля, 2010 - 18:45:19 - перейти к сообщению
Если Вы знаете, как в БД устроены индексы, то вопрос о сортировке несколько странный (по сути индекс уже построен, куда там еще сортировать)
6. SAD - 05 Июля, 2010 - 18:47:53 - перейти к сообщению
Сортиовка мне нужна, чтобы по первому массиву отсортировать второй
http://forum.php.su/topic.php?fo...1&topic=4304 . У меня там взаимооднозначность
7. Champion - 05 Июля, 2010 - 19:11:16 - перейти к сообщению
Какая разница для чего она нужна? Это на ее скорость не влияет)
8. JustUserR - 06 Июля, 2010 - 15:21:08 - перейти к сообщению
SAD В любом случае какой бы вид сортировки или зависимой выборки вы не использовали - вариант с SQL-запросом в цикле всегда будет более медленным не только по причине того что требуется время на инициацию соединения - но в особенности из-за того что сортировка и выборка внутри БД происходит значительно быстрее из-за наличия поисковых индексов и более эффективных алгоримтов В некоторых случаях имеет смысл даже переместить логику целиком на сервер БД путем написания SQL-функции - как правило такой метод будет работать значительно эффективнее чем при дополнительно взаимодействии с сервером приложений

 

Powered by ExBB FM 1.0 RC1