[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Скажите что быстрее работает и что правильнее?
kuzroman
Сравниваются два кода:

1й)
  while( list( $summ, $tovar, $id ) = mysql_fetch_row($zapros2) ) { ... }

2й)
      while( $myrow2 = mysql_fetch_assoc($zapros2) ) 
{
$summ= $myrow2['summ'];
$tovar= $myrow2['tovar'];
$id= $myrow2['id'];
...

}




Спустя 5 минут, 9 секунд (11.03.2011 - 17:33) kuzroman написал(а):
И вообще имеет ли смысл их сравнивать?

Хотя база довольно большая - каждый день добавляется около 20тыс строк.

Спустя 14 минут, 19 секунд (11.03.2011 - 17:47) inpost написал(а):
kuzroman
$t = microtime(true);
// Скрипт
echo microtime(true) - $t;

Спустя 6 минут, 22 секунды (11.03.2011 - 17:54) Trianon написал(а):
Цитата (kuzroman @ 11.03.2011 - 17:33)
И вообще имеет ли смысл их сравнивать?

Хотя база довольно большая - каждый день добавляется около 20тыс строк.

нет, не имеет . Вернее сказать, сравнивать-то имеет смысл, но не с точки зрения производительности.
Проблемы с производительностью, которые (когда и если) начнутся у Вас из-за размера таблицы, будут совсем не в этой строке.
Разница в скорости между ними - несущественная.

А вот, например, тот факт, что первый вариант зависит от порядка перечисления полей в SQL-запросе, а второй - не зависит, составляет разницу уже заметную.

Спустя 15 минут, 43 секунды (11.03.2011 - 18:09) kuzroman написал(а):
Цитата (inpost @ 11.03.2011 - 14:47)
kuzroman
$t = microtime(true);
// Скрипт
echo microtime(true) - $t;

Как показывает моя практика эта функция при одном и том же условии практически всегда показывает разное время.

Спустя 3 минуты, 29 секунд (11.03.2011 - 18:13) kuzroman написал(а):
Цитата (Trianon @ 11.03.2011 - 14:54)
Цитата (kuzroman @ 11.03.2011 - 17:33)
И вообще имеет ли смысл их сравнивать?

Хотя база довольно большая - каждый день добавляется около 20тыс строк.

нет, не имеет . Вернее сказать, сравнивать-то имеет смысл, но не с точки зрения производительности.
Проблемы с производительностью, которые (когда и если) начнутся у Вас из-за размера таблицы, будут совсем не в этой строке.
Разница в скорости между ними - несущественная.

А вот, например, тот факт, что первый вариант зависит от порядка перечисления полей в SQL-запросе, а второй - не зависит, составляет разницу уже заметную.

т.е. если я в sql запросе выбираю 3 поля вместо *, то он будет быстрее или это тоже несущественно?

Спустя 47 минут (11.03.2011 - 19:00) Trianon написал(а):
Цитата
т.е. если я в sql запросе выбираю 3 поля вместо *, то он будет быстрее или это тоже несущественно?



Для первого варианта это существенно, но вовсе не потому, что это, возможно, будет быстрее,а потому, что при этом уходит зависимость от порядка полей в таблице.

Для второго варианта так сразу не скажешь.
С одной стороны, безусловно, если требуется небольшое количество полей, а в таблице (а) их много, либо (б) имеются не требуемые в запросе поля большого объема (по сравнению с требуемыми), то и время обработки и нагрузка на сервер БД (и на клиентскую часть стороны приложения) при перечислении полей сократится. Особенно если выбирается много строк.

С другой, если лишних полей / строк немного, отсутствие повторного перечисления позволяет избежать ошибок при модификации скрипта, буде таковая понадобится.

Как-то так.

Спустя 8 часов, 50 минут, 24 секунды (12.03.2011 - 03:50) Shumomer написал(а):
Вобще говоря (по тестам) while( list( $summ, $tovar, $id ) = mysql_fetch_row($zapros2) ) { ... } быстрее. Но это существенно только если ОЧЕНЬ много запросов к маленьким таблицам.

Спустя 10 минут, 27 секунд (12.03.2011 - 04:01) inpost написал(а):
kuzroman
Сервер в зависимости от нагрузки и даёт разный результат, но там в долях секунд. Если один раз запустить скрипт, то получится что-то типо: 0,000001 сек. Тебе же надо довести до 0,1 или вообще до 1 сек, поэтому один и тот же скрипт запускай в цикле (тысячу, десять тысяч, сто тысяц инерций). Тогда результат работы будет что-то типо:
0,831831 - и...
0,945252 - !
Вот тогда и будет видна разница работы скрипта.
Вот приблизительный результат увидишь: http://inpost.dp.ua/12/test3.php
Попробуй обновить несколько раз, хоть и цифры будут разные, но результат по скорости почти всегда очевиден, кто быстрее. Один и тот же скрипт повторился 10 000 или 100 000 раз, не помню точно =)

Спустя 3 дня, 6 часов, 34 минуты, 44 секунды (15.03.2011 - 10:35) kuzroman написал(а):
Понял, спасибо всем!


_____________
kuzroman@list.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.