문제

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를 증가시킬 수 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top