Forum Webscript.Ru
Программирование => PHP => Тема начата: 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 дання констркшен работал быстрее чем вышестоящяя
Собственно вопрос ради любопыства, ПОЧЕМУ?
-
Забыл сказать разница в среднем на 1 милискунду
(первый цикл
0.49
второй 0.48)
-
В 20 случаях из 24-х была ошибка при округлении :)
-
А зачем в любом случае srand делать внутри цикла?
-
см. mt_srand/mt_rand (http://www.php.net/manual/en/function.mt-srand.php), она вроде как лучше.
комментарий от 03-Nov-2001 06:23 (по поводу вызова каждый раз [mt_]srand)
-
Maniac
ошибка при округлении
генератор работал отлично
Доктор
А зачем в любом случае srand делать внутри цикла?
А зачем не делать?
-
если не использовать srand() , то будет использоваться значение от 0 до 1.
мне кажется вы смешиваете понятия уникальности значения и скорости отработки функции в цикле.
2Britva :
да mt_rand() лучше, но вы забыли объяснить , чем лучше. :)
я как-то тестировал данную функцию на скорость, так вот в этом плане она работает нестабильно. Да собственно скорость тут дело десятое.
-
если не использовать srand() , то будет использоваться значение от 0 до 1.
мне кажется вы смешиваете понятия уникальности значения и скорости отработки функции в цикле.
Ничего не понял, что вы хотели донести.
AlieN
А зачем не делать?
Потому что она вызывается один раз, а никак не каждый раз перед rand (что тоже никто не запрещает делать, но зачем?).
-
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.
:)
-
ThE0ReTiC
Факт остается фактом
с srand работает быстрее
Ради эксперимента могу тоже самое провернуть с немеренным массивом в 20 мегов уверен что результат будет такой же,время жалко потерять
-
AlieN
Ты для правильности картины не массив увеличь, а цикл сдедай тысяч 100
-
Доктор
массив 500 кил
50000раз
все равно картина не меняется :)
-
Тогда верю :)
Но странно.