문제
Linux (및 기타 UNIX와 유사한 시스템)의 C ++에서 CPU (벽 시계가 아님) 시간이 긴 계산에 걸린 시간을 측정해야하므로 Clock ()를 사용하고 있습니다. 문제 : 32 비트 시스템에서, 이것은 약 2000 또는 4000 초 후에 감싸고 있습니다.
이것에 대한 권장 해결 방법은 무엇입니까?
해결책
당신은 사용하고 싶습니다 getrusage
다음 구조물을 채우는 것 :
struct rusage {
struct timeval ru_utime; /* user time used */
struct timeval ru_stime; /* system time used */
...
};
완료를 위해 struct timeval
:
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
항상 그렇듯이 자세한 내용은 맨 페이지에 문의하십시오 (man getrusage
)
다른 팁
제공 한 정밀도가 필요합니까? clock()
? 그렇지 않은 경우 사용할 수 있습니다 time()
두 번, 차이를 가져옵니다.
time_t start, end;
double diff;
time(&start);
// Do your stuff...
time(&end);
diff = difftime(end, start);
편집하다: time()
Litb가 그의 의견에서 지적한대로 실시간 (CPU 시간이 아님)을 측정하지만 clock()
. CPU 시간을 측정하려면 Litb의 조언과 사용을 따라야합니다. getrusage()
.
또 다른 가능한 방법은 ms 정확도를 반환하는 데 두 번 gettimeofday ()를 사용하는 것입니다.
반복적으로 시간을 보내고 롤오버 할 때마다 승수 변수 int를 증가시킬 수 있습니까?
제휴하지 않습니다 StackOverflow