C - 계산 시간을 알 수 있습니까?
컴퓨팅 시간을 측정하는데 get time of day를 사용하는 방법을 알고 있습니까?나는 이 코드로 한 번 측정할 수 있습니다.
char buffer[30];
struct timeval tv;
time_t curtime;
gettimeofday(&tv, NULL);
curtime=tv.tv_sec;
strftime(buffer,30,"%m-%d-%Y %T.",localtime(&curtime));
printf("%s%ld\n",buffer,tv.tv_usec);
이것은 컴퓨팅 전에 만들어진 것이고, 두 번째 것입니다.그런데 뺄 줄 아세요?
밀리초 안에 결과가 필요합니다.
시간 간격을 빼는 방법:
gettimeofday(&t0, 0);
/* ... */
gettimeofday(&t1, 0);
long elapsed = (t1.tv_sec-t0.tv_sec)*1000000 + t1.tv_usec-t0.tv_usec;
사용된 유형에 따라 연산이 오버플로될 수 있는 ~2000초보다 짧은 간격으로 작업한다는 가정입니다.더 긴 간격으로 작업해야 하는 경우 마지막 줄을 다음으로 변경합니다.
long long elapsed = (t1.tv_sec-t0.tv_sec)*1000000LL + t1.tv_usec-t0.tv_usec;
@Daniel Kamil Kozar가 제시한 정답은 정확한 답입니다. - get time of day는 실제로 경과된 시간을 측정하는 데 사용되어서는 안 됩니다.대신 clock_gettime(CLOCK_MONOTONIC)을 사용합니다.
맨 페이지는 다음과 같이 말합니다. gettime of day()에 의해 반환되는 시간은 시스템 시간의 불연속적인 점프(예: 시스템 관리자가 수동으로 시스템 시간을 변경하는 경우)에 영향을 받습니다.단조롭게 증가하는 시계가 필요하다면 clock_gettime(2)을 참조하십시오.
Opengroup(열린 그룹)은 - 응용 프로그램은 낡은 get time of day() 함수 대신 clock_gettime() 함수를 사용해야 한다고 말합니다.
작동하지 않거나 작동하지 않는 경우(VxWorks)에 직면할 때까지 모든 사람이 하루의 시간을 얻는 것을 좋아하는 것 같습니다. ... clock_get time은 환상적으로 멋지고 휴대하기 쉽습니다.
<<
코드 효율성을 측정하거나 다른 방법으로 시간 간격을 측정하려면 다음이 더 쉬워집니다.
#include <time.h>
int main()
{
clock_t start = clock();
//... do work here
clock_t end = clock();
double time_elapsed_in_seconds = (end - start)/(double)CLOCKS_PER_SEC;
return 0;
}
hth
아니요. get time of day는 절대 시간을 측정하는 데 사용해서는 안됩니다.
이것은 도처에 벌레를 일으키고 있습니다.버그를 더 추가하지 말아주세요.
당신의.curtime
variable은 에포크 이후의 시간(초)을 유지합니다.앞뒤에 하나씩 있으면 나중에 하나를 뺀 것이 경과 시간(초)입니다.뺄 수 있습니다.time_t
값은 아주 좋습니다.
언급URL : https://stackoverflow.com/questions/5362577/c-gettimeofday-for-computing-time
'programing' 카테고리의 다른 글
꿀꺽꿀꺽 + 제대로 작동하지 않음 (0) | 2023.10.08 |
---|---|
Safari에서 작동하지 않는 Sticky footer (0) | 2023.10.08 |
Android에서 사용자 지정 서체 사용 (0) | 2023.10.08 |
HTML5 캔버스 뷰포트의 너비 100% 높이? (0) | 2023.10.08 |
Laravel Expulent: 필드 ID로 배열 키 반환 (0) | 2023.10.08 |