gettimeofday () 는 PHP의 내장 기능으로 초 및 마이크로 초를 포함하여 현재 시간의 세부 사항을 반환합니다. 반환 값은 다음 키를 포함하는 배열입니다.
SEC : 현재 시간의 초 수 (UNIX에서 계산)
USEC : 현재 두 번째의 마이크로 초 수
이 두 값을 통해 고정밀 성능 테스트에 적합한 Time () 또는 Microtime () 보다 정확한 타임 스탬프를 얻을 수 있습니다.
기본 아이디어는 다음과 같습니다. 코드가 실행되기 전후의 시차를 기록하고 실행 시간을 계산하십시오.
<?php
// 시작 시간을 기록하십시오
$start = gettimeofday();
// 테스트하려는 코드는 다음과 같습니다
usleep(500000); // 아날로그 지연 0.5 두번째
// 종료 시간을 기록하십시오
$end = gettimeofday();
// 시차를 계산하십시오,单位为두번째(含微두번째)
$duration = ($end['sec'] - $start['sec']) + ($end['usec'] - $start['usec']) / 1000000;
echo "코드 실행 시간:{$duration} 두번째";
?>
위 코드에서 :
gettimeofday ()는 연관 배열을 반환합니다.
우리는 각각 초의 차이와 마이크로 초의 차이를 각각 계산 한 다음이를 초로 변환합니다.
최종 $ 기간은 코드가 실행중인 정확한 초를 나타내는 부동 소수점 번호입니다.
기능의 성능을 테스트하려고한다고 가정합니다.
<?php
function testFunction() {
$sum = 0;
for ($i = 0; $i < 1000000; $i++) {
$sum += $i;
}
return $sum;
}
$start = gettimeofday();
$result = testFunction();
$end = gettimeofday();
$duration = ($end['sec'] - $start['sec']) + ($end['usec'] - $start['usec']) / 1000000;
echo "기능 실행 결과:$result\n";
echo "실행 시간:{$duration} 두번째\n";
?>
이 예에서는 기능 성능을 평가할 수 있도록 TestFunction () 함수가 실행되는 시간을 측정합니다.
높은 정밀도 : 마이크로 초 수준의 시간 측정, 시간 () 보다 정확합니다.
간단하고 사용하기 쉬운 : 리턴 값은 배열이며 초와 마이크로 초의 정보는 명확합니다.
종속성 없음 : PHP 내장 기능, 확장 기능이 필요하지 않습니다.
gettimeofday ()가 반환 한 시간은 서버의 현재 시간이며 시스템 시간 조정에 영향을받을 수 있으며 교차 서버 또는 분산 시간 비교에 적합하지 않습니다.
매우 짧은 코드 세그먼트의 경우 실행 시간이 매우 작을 수 있으며, 더 안정적인 결과를 위해 여러 번 실행하고 평균 값을 계산하는 것이 좋습니다.