- microtime: documentation ( source)
- mt_rand: documentation ( source)
- array_slice: documentation ( source)
- shuffle: documentation ( source)
- in_array: documentation ( source)
- array_keys: documentation ( source)
- range: documentation ( source)
<?php
$tstart = microtime(true);
$numberOfRandoms = 500;
$uniques = array();
do {
$uniques[mt_rand(10000, 99999)] = true;
} while(count(array_keys($uniques)) < $numberOfRandoms);
$uniques = array_keys($uniques);
$elapsed = microtime(true) - $tstart;
echo "hek2mgl:\t\t\t" . $elapsed . PHP_EOL;
$tstart = microtime(true);
$uniques = range(10000, 99999);
shuffle($uniques);
$uniques = array_slice($uniques, 0, 500);
$elapsed = microtime(true) - $tstart;
echo "Dave Chen:\t\t\t" . $elapsed . PHP_EOL;
$tstart = microtime(true);
$uniques = array();
for($i = 0; $i < 500; $i++) {
do {
$code = mt_rand(10000, 99999);
} while(in_array($code, $uniques));
$uniques[] = $code;
}
$elapsed = microtime(true) - $tstart;
echo "Josh from Qaribou:\t\t\t" . $elapsed . PHP_EOL;