고해상도 시간 측정

고해상도 시간 측정 (High resolution timing)

PHP에서 나노초 단위까지 잴 수 있는 고해상도 시간 측정 기능과 HRTime 확장을 정리한 레퍼런스예요. 성능 측정이나 극히 짧은 시간 간격을 다뤄야 할 때 필요한 내용이에요.

출처: PHP: High resolution timing - Manual

본문

HRTime 확장은 고해상도 StopWatch 클래스를 구현합니다. 플랫폼별로 가장 좋은 API를 사용하기 때문에 해상도가 나노초 단위까지 올라가요. 또한 기반 API가 제공하는 저수준 틱(ticks)을 이용해 사용자 정의 스톱워치를 직접 구현하는 것도 가능합니다.

참고: PHP 7.3.0부터 관련 함수 hrtime()이 코어의 일부가 되었어요. 즉 별도 확장 없이도 사용할 수 있게 되었죠.

주요 클래스

HRTime\PerformanceCounter

성능 카운터와 관련된 클래스예요.

메서드 설명
HRTime\PerformanceCounter::getFrequency 초당 틱 수(timer frequency) 반환
HRTime\PerformanceCounter::getTicks 시스템의 현재 틱 반환
HRTime\PerformanceCounter::getTicksSince 주어진 값 이후 경과한 틱 반환

HRTime\StopWatch

측정을 시작·중지하며 경과 시간을 다루는 클래스예요.

메서드 설명
HRTime\StopWatch::getElapsedTicks 모든 간격(interval)의 경과 틱 반환
HRTime\StopWatch::getElapsedTime 모든 간격의 경과 시간 반환
HRTime\StopWatch::getLastElapsedTicks 마지막 간격의 경과 틱 반환
HRTime\StopWatch::getLastElapsedTime 마지막 간격의 경과 시간 반환
HRTime\StopWatch::isRunning 측정이 진행 중인지 여부
HRTime\StopWatch::start 시간 측정 시작
HRTime\StopWatch::stop 시간 측정 중지

HRTime\Unit

단위(unit) 관련 상수를 담고 있는 클래스예요. 경과 시간을 특정 단위로 환산할 때 사용해요.

더 알아보기