핵심 요약
Microsoft Developer의 글은 std::chrono의 고해상도 시계가 사실상 steady_clock로 구현되며, QueryPerformanceCounter의 복잡한 경로와 GetTickCount64의 단순 경로를 비교합니다. 고해상도가 필요 없으면 GetTickCount64가 더 빨라질 수 있다는 점에 주목합니다.
구현 방법
- QueryPerformanceCounter는 하드웨어 타임스탬프 신뢰성, VM 여부, 에뮬레이션 여부 등에 따라 알고리즘이 달라지며 커널 호출이 필요할 수 있습니다.
- GetTickCount64는 커널에서 주기적으로 업데이트되는 두 64비트 값을 메모리에서 읽고 시작 시의 변환 계수를 곱하는 방식으로 구현되어, 대체로 더 간단하고 빠릅니다.
- 서브밀리초 정밀도 계산은 결국 ms로 변환되므로 필요성이 낮고, Sleep 등에서 효과가 큽니다.
- 정확도는 보통 10~50ms 수준이며, timeBeginPeriod(1)로 1ms 설정 가능성도 언급됩니다.
주요 결과
- GetTickCount64 경량 경로가 일반적으로 더 빠르며, 고해상도 필요 없을 때 유리합니다.
- 성능 차이는 시스템 구성에 따라 달라질 수 있습니다.
- ms 기반 시간 측정 선택이 전체 성능에 큰 영향을 줄 수 있습니다.

