2010-06-28 3 views
0

내 응용 프로그램의 일부 실행 시간을 계산하려고하지만 밀리 초가 필요하므로 실행 시간도 길어야합니다. 나는 현재 clocktime = ctime에서 clock()을 사용하고 있지만, 생각하는 72 분의 범위를 가지고 있으며, 이것이 내 필요에 맞지 않습니다. 다른 휴대용 밀리 초 정밀도를 유지하는 큰 실행 시간을 계산하는 방법이 있습니까? 아니면 어떤 식 으로든 clock_t의 한계를 극복 할 수 있을까요?C++의 계산 시간이 72 분을 넘음 clock_t

+1

어쨌든 밀리 초 정밀도를 얻지 못하고 있습니다. 적어도 Windows에서는 시계가 10-15 밀리 초 밖에되지 않습니다. – Joel

+0

72 분은 어디서 났습니까? clock_t가 32 비트 값인 경우 약 71,500 분 또는 49.7 일입니다. –

+0

@ dash-tom-bang : 많은 플랫폼 (그리고 모든 POSIX 플랫폼)에서'clock()'은 마이크로 초의 정밀도를 가지고 있으므로 약 72 분 후에 32 비트'clock_t'가 오버플로됩니다. –

답변

2

불행하게도 내가 알고있는 것은 크로스 플랫폼 (아무 것도 존재하지 않는다고 말하는 것은 아닙니다)이 없습니다.

그럼에도 불구하고이 문제를 해결하기는 쉽습니다. 오랫동안 잠자기 상태 인 별도의 스레드 (예 : boost.thread)를 작성하고 지금까지의 시차를 합계에 더한 다음 반복합니다. 프로그램이 종료되면 종료되기 전에이 카운터에 추가 할 수있는 스레드를 중지하십시오.

3

처음 묻는 질문은 입니다. 실제로은 1 시간 동안 밀리 초 정밀도가 필요합니다.

간단한 방법 (이미있는 라이브러리를 둘러 보지 않고)을하면 타이머가 롤오버되고 다른 변수에 추가 될 때 추적됩니다.

+0

중요한 테이크 어웨이는 OP가 응용 프로그램의 예상 런타임에 유효한 방식으로 시간 델타를 누적해야한다는 것입니다. 델타를 64 비트 정수로 누적 할 수없는 이유는 없습니다. 밀리 초의 64 비트는 누구에게나 충분해야합니다. (5 억 8 천 4 백만년이 넘습니다.) –