note 93751 deleted from function.mt-rand by danbrown
| From: | danbrown@php.net | Date: | Fri, 25 Sep 2009 18:17:06 +0000 |
| Subject: | note 93751 deleted from function.mt-rand by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-161085@lists.php.net to get a copy of this message | ||
Note Submitter: balintx
----
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...