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() 승리
'웹 프로그래밍 > PHP' 카테고리의 다른 글
PHP) 어제 날짜 구하기 (3) | 2020.01.17 |
---|---|
PHP) Windows GUI 프로그램(*.exe) 실행하기 (0) | 2019.12.06 |
php) echo 보다 빠른 글 출력 (0) | 2019.06.07 |
php) include vs include_once (0) | 2019.06.07 |
php) isset() vs empty() (0) | 2019.06.07 |
php) $_REQUEST, $_GET, $_POST (0) | 2019.06.06 |
php) " 와 ' 의 차이 (0) | 2019.06.06 |
php) 문자 출력하기 (0) | 2019.06.06 |
저작권 보호안내
무단 전재, 재배포 행위는 금지됩니다. (글을 복사하여 게시금지)
본문의 일부(링크용 문장) 인용은 가능하지만, 출처와 링크(a 태그)를 남기셔야 됩니다.
(웹툴을 이용하고, 스크린샷/녹화하는것은 상관없습니다.)
예외적으로. 저에게 허락받은 경우에는 본문을 전재할 수 있습니다.
만약, 본문 공유를 원하신다면 링크 공유를 해주세요
저작권 정책 확인하기링크 공유하기