php) rand() vs mt_rand()

카테고리 : 웹 프로그래밍/PHP

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 태그)를 남기셔야 됩니다.
(웹툴을 이용하고, 스크린샷/녹화하는것은 상관없습니다.)

예외적으로. 저에게 허락받은 경우에는 본문을 전재할 수 있습니다.

만약, 본문 공유를 원하신다면 링크 공유를 해주세요

저작권 정책 확인하기
링크 공유하기

 댓글