고해상도 시간 측정
고해상도 시간 측정 (High resolution timing)
PHP에서 나노초 단위까지 잴 수 있는 고해상도 시간 측정 기능과 HRTime 확장을 정리한 레퍼런스예요. 성능 측정이나 극히 짧은 시간 간격을 다뤄야 할 때 필요한 내용이에요.
본문
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) 관련 상수를 담고 있는 클래스예요. 경과 시간을 특정 단위로 환산할 때 사용해요.