24'C 구름 많음
서울 강남구
rand() 는 오래된 함수,
mt_rand() 는 신식 함수이다.
당연히 속도가 mt_rand() 가 빠르고
랜덤값의 범위 또한 더욱 넓다.
만약 PHP 7.1 이상이면 이 둘의 차이는 없다.
rand() 를 하여도 mt_rand()가 실행되게 바뀌었다.
https://php.net/manual/en/migration71.incompatible.php
테스트는 rand의 최대 범위인 0~32767 까지로 테스트를 하였다.
속도 테스트 코드
function get_time() {
list($usec, $sec) = explode(' ', microtime());
return ((float)$usec + (float)$sec);
}
for($i=0;$i<1000;$i++){
mt_rand(0,32767);//cpu 로드만
}
$start = get_time();
for($i=0;$i<1000;$i++){
rand(0,32767);
}
$time = get_time() - $start;
$start = get_time();
for($i=0;$i<1000;$i++){
mt_rand(0,32767);
}
$time1 = get_time() - $start;
echo '<br/>'.$time.'초 걸림';
echo '<br/>'.$time1.'초 걸림<br/>';
if($time>$time1) echo ($time-$time1).'차이 뒤가 빠름';
else echo ($time1-$time).'차이 앞이 빠름';
$start = get_time();
for($i=0;$i<1000;$i++){
rand(0,32767);
}
$time = get_time() - $start;
$start = get_time();
for($i=0;$i<1000;$i++){
mt_rand(0,32767);
}
$time1 = get_time() - $start;
echo '<br/>'.$time.'초 걸림';
echo '<br/>'.$time1.'초 걸림<br/>';
if($time>$time1) echo ($time-$time1).'차이 뒤가 빠름';
else echo ($time1-$time).'차이 앞이 빠름';
결과는?
6.6041946411133E-5초 걸림
5.793571472168E-5초 걸림
8.1062316894531E-6차이 뒤가 빠름
> mt_rand() 승리
5.8889389038086E-5초 걸림
5.793571472168E-5초 걸림
9.5367431640625E-7차이 뒤가 빠름
> mt_rand() 승리