시간 과 시간 차 를 계산 하 는 몇 가지 방법 을 총 결 하 다.
13747 단어 총결산
1. 표준 C 와 C + + 를 모두 사용 할 수 있 습 니 다.
1, 획득 시간 용 timet time (time t * timer), 계산 시간 차 는 double difftime (time t timer 1, time t timer 0) 을 사용 합 니 다. 초 까지 정확 하 다.
테스트 프로그램 은 다음 과 같 습 니 다.
1 #include <time.h>
2 #include <stdio.h>
3 int main()
4 {
5 time_t start ,end ;
6 double cost;
7 time(&start);
8 sleep(1);
9 time(&end);
10 cost=difftime(end,start);
11 printf("%f/n",cost);
12 return 0;
13 }
이 프로그램 은 fedora 9, ubuntu 테스트 에 통과 되 었 습 니 다.
코드 중의 sleep 함수 에 대해 주의해 야 할 것 은:
1) windows 에서 Sleep 함수 이 며 windows. h 를 포함 합 니 다.
2) sleep 의 수 는 Windows 와 Linux 에서 1000 을 대표 하 는 의미 가 다 릅 니 다. Windows 에서 1000 밀리초, 즉 1 초 를 표시 합 니 다.Linux 에 서 는 1000 초 를 표시 하고 Linux 에 서 는 밀리초 단위 의 함 수 를 사용 하여 usleep 를 사용 할 수 있 습 니 다.
또한 시간 차 를 계산 하 는 용법 에 대해 볼 수 있다 http://www.cnblogs.com/Anita-z/p/3920417.html.
2、clock_t clock(),clock()
컴퓨터 가 시 작 된 후 시간 간격 을 얻 고 CPU 시간 을 얻 었 기 때문에 GPU 를 사용 할 때 1 / CLOCKS 까지 정확하게 주의해 야 합 니 다.PER_SEC 초.
테스트 프로그램 은 다음 과 같 습 니 다.
1 #include <time.h>
2 #include <stdio.h>
3 int main()
4 {
5 double start,end,cost;
6 start=clock();
7 sleep(1);
8 end=clock();
9 cost=end-start;
10 printf("%f/n",cost);
11 return 0;
12 }
2. C + + 중 (이곳 은 windows 환경 을 대상 으로 표준 c 에 서 는 Liux 와 windows 가 모두 가능 합 니 다)
1、GetTickCount()
호출 함 수 는 windows. h 를 포함 해 야 합 니 다.시스템 이 밀리초 까지 정확하게 작 동 하 는 것 을 얻 었 습 니 다. 테스트 프로그램 은 다음 과 같 습 니 다.
1 #include <iostream>
2 #include <windows.h>
3 using namespace std;
4 int main()
5 {
6 double start = GetTickCount();
7 Sleep(1000);
8 double end=GetTickCount();
9 cout << "GetTickCount:" << end-start << endl;
10 return 0;
11 }
2、GetLocalTime()
구조 체 에 저 장 된 year, month 등의 정 보 를 얻 었 다.C 언어 time 함수 획득 은 1970 년 1 월 1 일 0 시 0 분 0 초부 터 이때 까지 의 초 수 입 니 다.gmtime 함수 가 자주 사용 하 는 달력 으로 변환 되 어야 합 니 다.
c 언어 에서 자주 사용 하 는 달력 을 저장 하 는 구조 체 는 struct tm 로 time. h 에 포함 되 며, c + + 언어 는 SYSTEMTIME 구조 체 로 winbase. h (프로 그래 밍 은 windows. h 를 포함 하면 됩 니 다).물론 정밀도 가 초 일 것 이다.
테스트 프로그램 은 다음 과 같 습 니 다.
1 #include <iostream>
2 #include <windows.h>
3 using namespace std;
4 int main()
5 {
6 SYSTEMTIME start; //windows.h
7 GetLocalTime(&start);//time.h tm
8 cout<< start.year << endl;
9 }
c 언어의 gmtime 방법의 시범 코드 는 다음 과 같다.
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
struct tm *tm_ptr;
time_t the_time;
(void) time(&the_time);
tm_ptr = gmtime(&the_time);
printf("Raw time is %ld/n", the_time);
printf("gmtime gives:/n");
printf("date: %02d/%02d/%02d/n",
tm_ptr->tm_year, tm_ptr->tm_mon+1, tm_ptr->tm_mday);
printf("time: %02d:%02d:%02d/n",
tm_ptr->tm_hour, tm_ptr->tm_min, tm_ptr->tm_sec);
exit(0);
}
또한 c 언어 는 GetLocalTime 방법 과 유사 한 함수 ctime () 가 있 습 니 다.
localtime () 에 대한 원형 은: struct tm * localtime (const time t * timep) 입 니 다.테스트 프로그램의 gmtime 을 localtime 으로 바 꾸 면 출력 시간 이 시간 과 날 짜 를 얻 기 위 한 것 을 볼 수 있 습 니 다.더 좋 은 시간 과 날 짜 를 얻 기 위해 date 처럼 출력 할 수 있 습 니 다. asctime 또는 ctime 함수, 원형: char *ctime(const time_t *timeval);테스트 코드 는 다음 과 같 습 니 다:
1 #include <time.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 int main()
5 {
6 time_t the_time;
7 time(&the_time);
8 printf("The date is : %s /n" , ctime(&the_time));
9 exit(0);
10 }
3. 높 은 정밀도 의 시간 을 얻 으 려 면 사용 할 수 있 습 니 다.
BOOL Query PerformanceFrequency (LARGE INTEGER * lpFrequency) 시스템 의 카운터 주파수 가 져 오기
BOOL Query PerformanceCounter (LARGE INTEGER * lpPerformanceCount) 계수기 값 가 져 오기
그리고 두 번 의 카운터 차 를 Frequency 로 나 누 면 시간 을 얻 을 수 있 습 니 다.
테스트 프로그램 은 다음 과 같 습 니 다.
1 #include <iostream>
2 #include <windows.h>
3 using namespace std;
4 int main()
5 {
6 LARGE_INTEGER m_nFreq;
7 LARGE_INTEGER m_nBeginTime;
8 LARGE_INTEGER nEndTime;
9 QueryPerformanceFrequency(&m_nFreq); //
10 QueryPerformanceCounter(&m_nBeginTime); //
11 Sleep(100);
12 QueryPerformanceCounter(&nEndTime);
13 cout << (double)(nEndTime.QuadPart-m_nBeginTime.QuadPart)*1000/m_nFreq.QuadPart << endl;
14 }
주의해 야 할 것 은 결과 가 double 로 강제로 전환 되 어야 한 다 는 것 입 니 다. 그렇지 않 으 면 다음 과 같은 오 류 를 얻 을 수 있 습 니 다. < is ambiguous.
4、timeGetTime()。
정밀도: 밀리초, GetTickCount () 와 비슷 합 니 다.windows. h 를 포함 하고 Winmm. lib 를 추가 해 야 합 니 다.테스트 코드 는 다음 과 같 습 니 다:
#include <iostream>
#include <windows.h>//GetTickCount
//#include <mmsystem.h>
using namespace std;
int main()
{
DWORD start = timeGetTime();//
Sleep(1000);
DWORD end= timeGetTime();//
cout << timeGetTime() << endl;
return 0;
}
5. MFC 에서 CTime: GetCurrentTime () 은 초 까지 정확 하고 테스트 코드 를 표시 하지 않 습 니 다.
타이머 따 위 는 현재 사용 할 곳 이 많 지 않 으 니 정리 하지 않 겠 습 니 다.
참조 사이트 주소:
1、http://blog.csdn.net/wallaceli1981/archive/2009/10/24/4723218.aspx
2、http://wenku.baidu.com/view/beb3c9eef8c75fbfc77db2b5.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 기본 사용법 요약 (2)StringBuilder 또는 StringBuffer를 사용할 때 append () 방법으로 텍스트를 추가하고 toString () 방법으로 연결된 전체 텍스트를 가져올 수 있습니다 3. Iterator를 사용합니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.