title: "**고 정밀도로 코드 실행 시간 재기**"
description: "**고 정밀도로 코드 실행 시간 재기**"
cleanUrl: /sw-engineer/stop-watch-high-resolution
ogImage: ""
floatFirstTOC: right

제프리 릭터의 Programming Applications for Microsoft Windows. (4th Editon)에 담긴 내용입니다.

주의 사항

실행 쓰래드는 비선점이라고 가정함. (허나..대부분의 고 정밀도의 실행 시간을 원하는 코드는 수명이 짧도록 작성된다.)

class CStopwatch {
private:
LARGE_INTEGER m_liPerfFreq;
LARGE_INTEGER m_liPerfStart;
public:
    CStopwatch() {
        QueryPerformanceFrequency(&m_liPerfFreq);
        Start();
    }
    void Start() {
        QueryPerformanceCounter(&m_liPerfStart);
    }
    __int64 Now() const {
        LARGE_INTEGER liPerfNow;
        QueryPerformanceCounter(&liPerfNow);
        return (
            ((liPerfNow.QuadPart - m_liPerfStart.QuadPart)
            * 1000) / m_liPerfFreq.QuadPart);
    }
};

// 사용법

//스탑워치 타이머를 생성한다.(기본값으로 현재 시간이 맞추어짐)
CStopwatch  stopwatch;

/////////////////////////
//시간 잴 코드는 이곳에
/////////////////////////

//현재까지 얼마만큼의 시간이 흘렀는지를 얻는다.
//qwElapsedTime은 코드가 실행에 소비한 시간. 단위는 milliseconds.
__int64 qwElapsedTime = stopwatch.Now();