Автор Тема: SRAND или нет?  (Прочитано 4762 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
SRAND или нет?
« : 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 дання констркшен работал быстрее чем вышестоящяя

Собственно вопрос ради любопыства, ПОЧЕМУ?
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
SRAND или нет?
« Ответ #1 : 10 Сентября 2002, 16:28:06 »
Забыл сказать разница в среднем на 1 милискунду
(первый цикл
0.49
второй 0.48)
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
SRAND или нет?
« Ответ #2 : 10 Сентября 2002, 20:06:04 »
В 20 случаях из 24-х была ошибка при округлении :)
TANSTAAFL

Оффлайн Доктор

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 487
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
SRAND или нет?
« Ответ #3 : 10 Сентября 2002, 22:47:07 »
А зачем в любом случае srand делать внутри цикла?

Оффлайн Britva

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1660
  • +0/-0
  • 0
    • Просмотр профиля
    • http://eugeny.com
SRAND или нет?
« Ответ #4 : 11 Сентября 2002, 01:02:45 »
см. mt_srand/mt_rand, она вроде как лучше.
комментарий от 03-Nov-2001 06:23 (по поводу вызова каждый раз [mt_]srand)
Евгений aka Razor,

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
SRAND или нет?
« Ответ #5 : 11 Сентября 2002, 10:23:21 »
Maniac
Цитировать
ошибка при округлении

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

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

А зачем не делать?
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Messerscmitt

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.php.kz/
SRAND или нет?
« Ответ #6 : 12 Сентября 2002, 04:58:33 »
если не использовать srand() , то будет использоваться  значение от 0 до 1.
мне кажется вы смешиваете понятия уникальности значения и скорости отработки функции в цикле.

2Britva :

да mt_rand() лучше, но вы забыли объяснить , чем лучше. :)
я как-то тестировал данную функцию на скорость, так вот в этом плане она работает нестабильно. Да собственно скорость тут дело десятое.
« Последнее редактирование: 12 Сентября 2002, 05:03:40 от Messerscmitt »

Оффлайн Доктор

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 487
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
SRAND или нет?
« Ответ #7 : 12 Сентября 2002, 22:36:43 »
Цитировать
если не использовать srand() , то будет использоваться значение от 0 до 1.
мне кажется вы смешиваете понятия уникальности значения и скорости отработки функции в цикле.

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

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

Потому что она вызывается один раз, а никак не каждый раз перед rand (что тоже никто не запрещает делать, но зачем?).

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
SRAND или нет?
« Ответ #8 : 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.

:)
AS IS...

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
SRAND или нет?
« Ответ #9 : 13 Сентября 2002, 14:30:17 »
ThE0ReTiC
Факт остается фактом
с srand работает быстрее

Ради эксперимента могу тоже самое провернуть с немеренным массивом в 20 мегов уверен что результат будет такой же,время жалко потерять
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Доктор

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 487
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
SRAND или нет?
« Ответ #10 : 13 Сентября 2002, 16:11:45 »
AlieN
Ты для правильности картины не массив увеличь, а цикл сдедай тысяч 100

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
SRAND или нет?
« Ответ #11 : 13 Сентября 2002, 21:41:08 »
Доктор
массив 500 кил
50000раз
все равно картина не меняется :)
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Доктор

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 487
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
SRAND или нет?
« Ответ #12 : 13 Сентября 2002, 22:15:40 »
Тогда верю :)
Но странно.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28