note 93751 added to function.mt-rand
| From: | balintx at osu1 dot php dot net | Date: | Fri, 25 Sep 2009 18:16:35 +0000 |
| Subject: | note 93751 added to function.mt-rand | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-161084@lists.php.net to get a copy of this message | ||
So... mt_rand() or rand() is faster?
The script is:
<?php
$startof_mtrand = microtime(true);
for ($i = 1; $i <= 100000; $i++)
{
$r = mt_rand(1,123456789876543210);
}
$stopof_mtrand = microtime(true);
$startof_rand = microtime(true);
for ($i = 1; $i <= 100000; $i++)
{
$r = rand(1,123456789876543210);
}
$stopof_rand = microtime(true);
$mt_rand = $stopof_mtrand - $startof_mtrand;
$rand = $stopof_rand - $startof_rand;
$faster = "mt_rand";
if ($rand < $mt_rand) $faster = "rand";
echo "MT_RAND: ".$mt_rand." - RAND: ".$rand." - faster:
".$faster."\n";
?>
The result (32 calls):
MT_RAND: 0.763498067856 - RAND: 0.765659093857 - faster: mt_rand
MT_RAND: 0.750968933105 - RAND: 0.96776509285 - faster: mt_rand
MT_RAND: 0.792922973633 - RAND: 0.80418586731 - faster: mt_rand
MT_RAND: 0.787175893784 - RAND: 0.786850214005 - faster: rand
MT_RAND: 0.756877183914 - RAND: 0.77552485466 - faster: mt_rand
MT_RAND: 0.74907207489 - RAND: 0.773026943207 - faster: mt_rand
MT_RAND: 0.756637096405 - RAND: 0.75933098793 - faster: mt_rand
MT_RAND: 0.748350143433 - RAND: 0.76425909996 - faster: mt_rand
MT_RAND: 0.770343065262 - RAND: 0.812801122665 - faster: mt_rand
MT_RAND: 0.767928123474 - RAND: 0.768054962158 - faster: mt_rand
MT_RAND: 0.742032051086 - RAND: 0.772170066833 - faster: mt_rand
MT_RAND: 0.74090385437 - RAND: 0.755872964859 - faster: mt_rand
MT_RAND: 0.74593091011 - RAND: 0.759196043015 - faster: mt_rand
MT_RAND: 0.747311115265 - RAND: 0.770936012268 - faster: mt_rand
MT_RAND: 0.746823072433 - RAND: 0.768181085587 - faster: mt_rand
MT_RAND: 0.751354932785 - RAND: 0.766705989838 - faster: mt_rand
MT_RAND: 0.948323965073 - RAND: 0.876231908798 - faster: rand
MT_RAND: 0.865748167038 - RAND: 0.999846935272 - faster: mt_rand
MT_RAND: 0.766236066818 - RAND: 0.78586602211 - faster: mt_rand
MT_RAND: 0.769587993622 - RAND: 0.781677961349 - faster: mt_rand
MT_RAND: 0.747069120407 - RAND: 0.766463041306 - faster: mt_rand
MT_RAND: 0.747107982635 - RAND: 0.771915912628 - faster: mt_rand
MT_RAND: 0.746612071991 - RAND: 0.773558855057 - faster: mt_rand
MT_RAND: 0.812180995941 - RAND: 0.77534198761 - faster: rand
MT_RAND: 0.9987449646 - RAND: 0.774494886398 - faster: rand
MT_RAND: 0.759826183319 - RAND: 0.776414871216 - faster: mt_rand
MT_RAND: 0.745733976364 - RAND: 0.775793075562 - faster: mt_rand
MT_RAND: 0.747427940369 - RAND: 0.765375137329 - faster: mt_rand
MT_RAND: 0.745938777924 - RAND: 0.757652997971 - faster: mt_rand
MT_RAND: 0.741550922394 - RAND: 0.768909931183 - faster: mt_rand
MT_RAND: 0.750838041306 - RAND: 0.756472826004 - faster: mt_rand
MT_RAND: 0.743855953217 - RAND: 0.768594026566 - faster: mt_rand
---
so... I think mt_rand is faster, but...
<?php
for ($a = 1; $a <= 100; $a++)
{
$startof_mtrand = microtime(true);
for ($i = 1; $i <= 100000; $i++)
{
$r = mt_rand(1,123456789876543210);
}
$stopof_mtrand = microtime(true);
$startof_rand = microtime(true);
for ($i = 1; $i <= 100000; $i++)
{
$r = rand(1,123456789876543210);
}
$stopof_rand = microtime(true);
$mt_rand = $stopof_mtrand - $startof_mtrand;
$rand = $stopof_rand - $startof_rand;
if ($rand < $mt_rand) { $c_rand++; } else { $c_mt_rand++; }
}
if ($c_rand > $c_mt_rand) { $fastest = "RAND()"; } else { $fastest =
"MT_RAND()"; }
echo "Fastest: ".$fastest." [rand: ".$c_rand.", mt_rand:
".$c_mt_rand."]";
?>
Result:
Fastest: MT_RAND() [rand: 28, mt_rand: 72]
I think rand() might be as fast as mt_rand(), but we need a lots of results...
----
Server IP: 92.43.200.200
Probable Submitter: 86.101.115.161
----
Manual Page -- http://www.php.net/manual/en/function.mt-rand.php
Edit -- https://master.php.net/note/edit/93751
Del: integrated -- https://master.php.net/note/delete/93751/integrated
Del: useless -- https://master.php.net/note/delete/93751/useless
Del: bad code -- https://master.php.net/note/delete/93751/bad+code
Del: spam -- https://master.php.net/note/delete/93751/spam
Del: non-english -- https://master.php.net/note/delete/93751/non-english
Del: in docs -- https://master.php.net/note/delete/93751/in+docs
Del: other reasons-- https://master.php.net/note/delete/93751
Reject -- https://master.php.net/note/reject/93751
Search -- https://master.php.net/manage/user-notes.php