boost::timer 에서 sleep() 으로 쉬는 구간은 시간체크를 못하나요?

trymp의 이미지

        boost::timer t5;
 
        sleep(10);
        printf("elapsed:%f \n", t5.elapsed());

위와 같은 코드인때, 10.000 이 찍혀야 할 것 같은데 그냥 0.0000 이 찍힙니다.

timer 라는게 경과시간을 찍어주는 API 아닌가요?

왜 저러는지 궁금합니다. boost 에 대해 잘 아시는 분 좀 알려주세요.

iknights의 이미지

sleep() 대신 cpu 처리가 필요한 for문등의 작업을 하면
cpu처리 시간에 대한 elapsed time이 출력됩니다.
sleep()의 경우 cpu 처리가없어 0으로 나옵니다.

의도한 결과를 얻으실려면 gettimeofday 혹은 boost::timer::cpu_timer를 이용하시면 될거 같습니다.
기타) windows ::Sleep의 경우는 boost::timer의 elapsed time이 계산됩니다.

브이~

라스코니의 이미지

boost timer API를 보니 elapsed를 호출하기 전에 t5.stop() 을 호출해줘야 할 것 같은데요?