Forum Webscript.Ru

Программирование => PHP => Тема начата: AlieN от 10 Сентября 2002, 16:17:48

Название: SRAND или нет?
Отправлено: AlieN от 10 Сентября 2002, 16:17:48
Вот сейчас отгонял две конструкции на производительность


for ($i=0; $i < 50; $i++){
    include("popular.inc");
    $key=array_rand($desktops,$limit);
    unset($desktops);
    }
 
против

for ($i=0; $i < 50; $i++){
    srand ((float) microtime() * 10000000);
    include("popular.inc");
    $key=array_rand($desktops,$limit);
    unset($desktops);
    }

Во второй рандомайзер более круче работает
плюс ,что удивительно, в 20 случаях из 24 дання констркшен работал быстрее чем вышестоящяя

Собственно вопрос ради любопыства, ПОЧЕМУ?
Название: SRAND или нет?
Отправлено: AlieN от 10 Сентября 2002, 16:28:06
Забыл сказать разница в среднем на 1 милискунду
(первый цикл
0.49
второй 0.48)
Название: SRAND или нет?
Отправлено: Maniac от 10 Сентября 2002, 20:06:04
В 20 случаях из 24-х была ошибка при округлении :)
Название: SRAND или нет?
Отправлено: Доктор от 10 Сентября 2002, 22:47:07
А зачем в любом случае srand делать внутри цикла?
Название: SRAND или нет?
Отправлено: Britva от 11 Сентября 2002, 01:02:45
см. mt_srand/mt_rand (http://www.php.net/manual/en/function.mt-srand.php), она вроде как лучше.
комментарий от 03-Nov-2001 06:23 (по поводу вызова каждый раз [mt_]srand)
Название: SRAND или нет?
Отправлено: AlieN от 11 Сентября 2002, 10:23:21
Maniac
Цитировать
ошибка при округлении

генератор работал отлично

Доктор
Цитировать
А зачем в любом случае srand делать внутри цикла?

А зачем не делать?
Название: SRAND или нет?
Отправлено: Messerscmitt от 12 Сентября 2002, 04:58:33
если не использовать srand() , то будет использоваться  значение от 0 до 1.
мне кажется вы смешиваете понятия уникальности значения и скорости отработки функции в цикле.

2Britva :

да mt_rand() лучше, но вы забыли объяснить , чем лучше. :)
я как-то тестировал данную функцию на скорость, так вот в этом плане она работает нестабильно. Да собственно скорость тут дело десятое.
Название: SRAND или нет?
Отправлено: Доктор от 12 Сентября 2002, 22:36:43
Цитировать
если не использовать srand() , то будет использоваться значение от 0 до 1.
мне кажется вы смешиваете понятия уникальности значения и скорости отработки функции в цикле.

Ничего не понял, что вы хотели донести.

AlieN
Цитировать
А зачем не делать?

Потому что она вызывается один раз, а никак не каждый раз перед rand (что тоже никто не запрещает делать, но зачем?).
Название: SRAND или нет?
Отправлено: ThE0ReTiC от 12 Сентября 2002, 23:15:54
AlieN
http://www.php.net/manual/en/function.srand.php
Note:
Since PHP 4.2.0 it\'s no longer necessary to seed the random number generator before using it.

:)
Название: SRAND или нет?
Отправлено: AlieN от 13 Сентября 2002, 14:30:17
ThE0ReTiC
Факт остается фактом
с srand работает быстрее

Ради эксперимента могу тоже самое провернуть с немеренным массивом в 20 мегов уверен что результат будет такой же,время жалко потерять
Название: SRAND или нет?
Отправлено: Доктор от 13 Сентября 2002, 16:11:45
AlieN
Ты для правильности картины не массив увеличь, а цикл сдедай тысяч 100
Название: SRAND или нет?
Отправлено: AlieN от 13 Сентября 2002, 21:41:08
Доктор
массив 500 кил
50000раз
все равно картина не меняется :)
Название: SRAND или нет?
Отправлено: Доктор от 13 Сентября 2002, 22:15:40
Тогда верю :)
Но странно.