"PHP 수행시간 측정"의 두 판 사이의 차이

(사용자 3명의 중간 판 45개는 보이지 않습니다)
1번째 줄: 1번째 줄:
*PHP 수행시간 측정
;PHP 수행시간 측정, PHP 속도 측정
*PHP 속도 측정
;PHP 속도 비교, PHP 함수 성능 비교
*PHP 속도 비교


==수행시간 측정==
==수행시간 측정==
<source lang='php'>
<syntaxhighlight lang='php' run>
<!DOCTYPE html>
function get_time() { $t=explode(' ',microtime()); return (float)$t[0]+(float)$t[1]; }
<meta charset="utf-8" />
<?php
function get_time() {
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}
 
$start = get_time();
$start = get_time();
/*
/*
19번째 줄: 11번째 줄:
$end = get_time();
$end = get_time();
$time = $end - $start;
$time = $end - $start;
echo '<br/>'.$time.'초 걸림';
echo number_format($time,6) . " 초 걸림";
?>
</syntaxhighlight>
</source>


==10만회 수행시간 측정==
==10만회 수행시간 측정==
10만회 수행한 시간을 측정해보자.
10만회 수행한 시간을 측정해보자.
<source lang='php'>
<syntaxhighlight lang='php' run>
function get_time() { $t=explode(' ',microtime()); return (float)$t[0]+(float)$t[1]; }
$start = get_time(); // 속도 측정 시작
$start = get_time(); // 속도 측정 시작


34번째 줄: 26번째 줄:
$end = get_time(); // 속도 측정 끝
$end = get_time(); // 속도 측정 끝
$time = $end - $start;
$time = $end - $start;
echo '<br/>수행시간: '.number_format($time,4).'';
echo '수행시간: ' . number_format($time,6) . " \n";
echo '<br/>값: '.$a;
echo '값: ' . $a;
</source>
</syntaxhighlight>
 
:→ 수행시간은 서버의 성능에 따라 달라진다.
;수행결과
<source lang='text'>
수행시간: 0.0540초
값: 9.9980001899886E+99
</source>
→ 수행시간은 서버의 성능에 따라 달라진다.


==반복 측정==
==반복 측정==
10만회 수행을 5회 반복 측정하고 평균을 계산해보자.
10만회 수행을 5회 반복 측정하고 평균을 계산해보자.
<source lang='php'>
<syntaxhighlight lang='php' run>
$time_arr = array();
function get_time() { $t=explode(' ',microtime()); return (float)$t[0]+(float)$t[1]; }
 
$time_arr = [];
$repeat = 5;
$repeat = 5;
for($j=0;$j<$repeat;$j++) {
for($j=0;$j<$repeat;$j++) {
60번째 줄: 48번째 줄:
$time = $end - $start;
$time = $end - $start;
$time_arr[] = $time;
$time_arr[] = $time;
echo '<br/>수행시간: '.number_format($time,4).'초';
echo ($j+1) . '수행시간: ' . number_format($time,6) . ' 초, ';
echo '결과값: ' . $a . "\n";
}
}
$time_mean = array_sum($time_arr)/$repeat;
$time_mean = array_sum($time_arr)/$repeat;
echo '<br/>평균: '.number_format($time,4).'';
echo '평균 수행시간: ' . number_format($time_mean,6) . " \n";
echo '<br/>결과: '.$a;
</syntaxhighlight>
</source>
;수행결과
<source lang='text'>
수행시간: 0.0535초
수행시간: 0.0541초
수행시간: 0.0542초
수행시간: 0.0538초
수행시간: 0.0538초
평균: 0.0538초
결과: 9.9980001899886E+99
</source>


==비교 측정==
==비교 측정==
pow을 pow2 또는 pow3으로 바꾸어 비교해볼 수 있다.
pow을 pow2 또는 pow3으로 바꾸어 비교해볼 수 있다.
<source lang='php'>
<syntaxhighlight lang='php' run>
<!DOCTYPE html>
function get_time() { $t=explode(' ',microtime()); return (float)$t[0]+(float)$t[1]; }
<meta charset="utf-8" />
<?php
function get_time() {
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}


function pow2($b, $n)
function pow2($b, $n)
103번째 줄: 75번째 줄:
}
}


$time_arr = array();
$funcs = ['pow', 'pow2', 'pow3'];
$repeat = 5;
$repeat = 2; // 측정횟수
for($j=0;$j<$repeat;$j++) {
$time_arr = [];
$start = get_time();
foreach( $funcs as $func ) {
echo "함수: $func\n";  
for($i=0;$i<100000;$i++) {
for($j=0;$j<$repeat;$j++) {
$a = pow2($i, 20);
$start = get_time();
for($i=0;$i<100000;$i++) {
$a = $func($i, 20);
}
$end = get_time();
$time = $end - $start;
$time_arr[] = $time;
echo ($j+1).'차 수행시간: ' . number_format($time,6) . ' 초, ';
echo '결과값: ' . $a . "\n";
}
}
$time_mean = array_sum($time_arr)/$repeat;
$end = get_time();
echo '평균 수행시간: '.number_format($time_mean,6) . " \n";
$time = $end - $start;
$time_arr[] = $time;
echo '<br/>수행시간: '.number_format($time,4).'';
}
}
$time_mean = array_sum($time_arr)/$repeat;
</syntaxhighlight>
echo '<br/>평균: '.number_format($time,4).'초';
:→ PHP 내장함수인 pow, 반복문을 사용한 pow2, 재귀함수인 pow3의 수행시간 비교: pow < pow2 < pow3
echo '<br/>결과: '.$a;
:→ 즉 속도는 pow > pow2 > pow3
?>
 
</source>
==같이 보기==
* [[해시 알고리즘 속도 비교]]
* [[자바스크립트 수행시간 측정]]
* [[Bash 수행시간 측정]]
* [[수행시간 측정]]


==참고자료==
==참고==
*http://php.net/manual/en/function.microtime.php
*http://php.net/manual/en/function.microtime.php
*http://www.tipsntutorials.com/tips/PHP/74
*http://www.tipsntutorials.com/tips/PHP/74


[[분류: PHP]]
[[분류: PHP]]
[[분류: 측정]]
[[분류: 수행시간 측정]]

2021년 11월 8일 (월) 23:38 판

PHP 수행시간 측정, PHP 속도 측정
PHP 속도 비교, PHP 함수 성능 비교

1 수행시간 측정

function get_time() { $t=explode(' ',microtime()); return (float)$t[0]+(float)$t[1]; }
$start = get_time();
/*
수행할 내용
*/
$end = get_time();
$time = $end - $start;
echo number_format($time,6) . " 초 걸림";

2 10만회 수행시간 측정

10만회 수행한 시간을 측정해보자.

function get_time() { $t=explode(' ',microtime()); return (float)$t[0]+(float)$t[1]; }
$start = get_time(); // 속도 측정 시작

for($i=0;$i<100000;$i++) {
	$a = pow($i, 20);
}

$end = get_time(); // 속도 측정 끝
$time = $end - $start;
echo '수행시간: ' . number_format($time,6) . " 초\n";
echo '값: ' . $a;
→ 수행시간은 서버의 성능에 따라 달라진다.

3 반복 측정

10만회 수행을 5회 반복 측정하고 평균을 계산해보자.

function get_time() { $t=explode(' ',microtime()); return (float)$t[0]+(float)$t[1]; }

$time_arr = [];
$repeat = 5;
for($j=0;$j<$repeat;$j++) {
	$start = get_time();
	
	for($i=0;$i<100000;$i++) {
		$a = pow($i, 20);
	}
	
	$end = get_time();
	$time = $end - $start;
	$time_arr[] = $time;
	echo ($j+1) . '차 수행시간: ' . number_format($time,6) . ' 초, ';
	echo '결과값: ' . $a . "\n";
}
$time_mean = array_sum($time_arr)/$repeat;
echo '평균 수행시간: ' . number_format($time_mean,6) . " 초\n";

4 비교 측정

pow을 pow2 또는 pow3으로 바꾸어 비교해볼 수 있다.

function get_time() { $t=explode(' ',microtime()); return (float)$t[0]+(float)$t[1]; }

function pow2($b, $n)
{
	$result = 1;
	for($i=0;$i<$n;$i++) {
		$result *= $b;
	}
	return $result;
}

function pow3($b, $n)
{
	if($n<2)return $b;
	return pow3($b, $n-1) * $b;
}

$funcs = ['pow', 'pow2', 'pow3'];
$repeat = 2; // 측정횟수
$time_arr = [];
foreach( $funcs as $func ) {
	echo "함수: $func\n"; 
	for($j=0;$j<$repeat;$j++) {
		$start = get_time();
		for($i=0;$i<100000;$i++) {
			$a = $func($i, 20);
		}
		$end = get_time();
		$time = $end - $start;
		$time_arr[] = $time;
		echo ($j+1).'차 수행시간: ' . number_format($time,6) . ' 초, ';
		echo '결과값: ' . $a . "\n";
	}
	$time_mean = array_sum($time_arr)/$repeat;
	echo '평균 수행시간: '.number_format($time_mean,6) . " 초\n";
}
→ PHP 내장함수인 pow, 반복문을 사용한 pow2, 재귀함수인 pow3의 수행시간 비교: pow < pow2 < pow3
→ 즉 속도는 pow > pow2 > pow3

5 같이 보기

6 참고

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}