ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Chrono
    Study/C&C++ 2015. 11. 20. 21:46

    High Resolution Timer가 필요해

    Linux 프로그램에서 많이 사용하는 hrt (high resolution timer)가 윈도 프로그램에서 없어서,

    Linux 프로그램을 윈도 프로그램으로 포팅할때 애를 먹었다.


    Window엔 그런거 없어?

    Visual C++에서 지원하는 timer는 GetCpuTime, GetLocalTime 등으로 ms 단위의 시간을 얻어와서 계산하는 것이 대부분이고, 

    이마저도 정밀한 time이 아니라서 us단위가 필요할때 쓰기가 어렵다.


    대안이 있긴 하지~

    getCpuTickCount를 가져와서 clock frequency로 나누거나

    QueryPerformanceCounter, QueryPerformanceFrequency를 사용해서 us timer를 만들 수도 있지만,

    둘다 clock으로 나누는 방법이라 가변 클럭인 상황에서 쓰기 어렵지 않을까?

    (보통 프로그램이 돌아가는 중이라면 CPU가 클럭을 낮출 일은 없을 것 같긴 하다)

    게다가 C++ 표준이 아니니 윈도 프로그램이 아니면 호환이 안된다.


    Chrono

    하지만 boost에 chrono가 도입되고 C++11의 표준으로 들어가게되면서,

    드디어 윈도 프로그램에서도 chrono를 지원한다.

    VS2012부터 된다고 하는데, VS2013에서 써보니 잘된다.

    type castind에 따라 nanosecond까지 계산할 수 있고,

    곱하거나 나누는 연산 없이 사용할 수 있어서 편하다.


    참고 내용:

    http://egloos.zum.com/sweeper/v/2996847

Designed by Tistory.