그래서 gettimeofday를 사용하여 코드 실행 경과 시간을 찾으려고합니다. 그러나 표준 출력으로 출력 할 때이 매우 큰 수를 얻습니다. 실행은 1 초도 채 걸리지 않지만 출력은 훨씬 더 오랜 시간이 걸립니다.gettimeofday를 사용하여 경과 시간을 밀리 초 단위로 찾으려고 시도합니다.
struct timeval start, end;
gettimeofday(&start, NULL);
//code
gettimeofday(&end, NULL);
printf("Elapsed Time = %ld\n", (end.tv_sec - start.tv_sec) + ((end.tv_usec - start.tv_usec)/1000000.0);
코드 초 미만에서 실행하지만 내 출력은 -> 140734185085712
'end.tv_usec'에서'start.tv_usec'을 뺄 수 없으며, 43 - 19를 계산할 때 3에서 9를 뺄 수 있습니다. –
@SteveSummit : 가능합니다. 43 - 19은'(4-1) * 10 + (3-9)'입니다. 3-9에서 얻은 -6은 첫 번째 첫 번째 비트에서 오른쪽 대답으로 30을 줄이기 위해 필요한 것입니다. –
그래, 나는 너무 빨리 논평 한 것 같아. 나는 진짜 문제를 놓쳤다. 나의 방어 책에서'struct timeval'의'tv_usec' 필드에 부호가 없다면 언더 플로우에 문제가있을 수 있다고 말할 것입니다. (하지만 일반적으로 서명 되었으니 까.) –