1. 这个是windows里面常用来计算程序运行时间的函数:
1: DWORD dwStart = GetTickCount();
2: Test(); // Your program.
3: DWORD dwEnd = GetTickCount();
4: DWORD dwTimes = dwEnd - dwStart;
则(dwEnd-dwStart)就是你的程序运行时间, 以毫秒为单位这个函数只精确到55ms,1个tick就是55ms。
2. timeGetTime()基本等于GetTickCount(),但是精度更高:
1: DWORD dwStart = timeGetTime();
2: Test(); // Your program
3: DWORD dwEnd = timeGetTime();
4: DWORD dwTimes = dwEnd - dwStart;
则(dwEnd-dwStart)就是你的程序运行时间, 以毫秒为单位虽然返回的值单位应该是ms,但传说精度只有10ms。
3. 用clock()函数,得到系统启动以后的毫秒级时间,然后除以CLOCKS_PER_SEC,就可以换成“秒”,标准c函数。
clock_t clock ( void );
1: #include <time.h>
2: clock_t t = clock();
3: long sec = t / CLOCKS_PER_SEC;
他是记录时钟周期的,实现看来不会很精确,需要试验验证。
1: #include <iostream>
2: #include <ctime>
3: using namespace std;
4: int main()
5: {
6: time_t begin,end;
7: begin = clock();
8: //这里加上你的代码
9: end = clock();
10: cout << "runtime: " << double(end - begin) / CLOCKS_PER_SEC << endl;
11: return 0;
12: }
4. unix时间相关,也是标准库的
这些在<time.h>
1). timegm函数只是将struct tm结构转成time_t结构,不使用时区信息;
1: time_t timegm(struct tm *tm);
2).mktime使用时区信息
1: time_t mktime(struct tm *tm);
timelocal 函数是GNU扩展的与posix函数mktime相当
1: time_t timelocal (struct tm *tm);
3). gmtime函数只是将time_t结构转成struct tm结构,不使用时区信息;
1: struct tm * gmtime(const time_t *clock);
4). localtime使用时区信息
1: struct tm * localtime(const time_t *clock);
5). time获取时间,stime设置时间
1: time_t t;
2: t = time(&t);
6). stime其参数应该是GMT时间,根据本地时区设置为本地时间;
1: int stime(time_t *tp)
UTC=true 表示采用夏时制;文件的修改时间等信息全部采用GMT时间存放,不同的系统在得到修改时间后通过localtime转换成本地时间;
设置时区推荐使用setup来设置;设置时区也可以先更变/etc/sysconfig/clock中的设置 再将ln -fs /usr/share/zoneinfo/xxxx/xxx /etc/localtime 才能重效
time_t只能表示68年的范围,即mktime只能返回1970-2038这一段范围的time_t看看你的系统是否有time_t64,它能表示更大的时间范围
。
5. Window里面的一些不一样的
CTime MFC类,好像就是把time.h封了个类,没扩展
1: CTime t = GetCurrentTime();
SYSTEMTIME 结构包含毫秒信息
1: typedef struct _SYSTEMTIME {
2: WORD wYear;
3: WORD wMonth;
4: WORD wDayOfWeek;
5: WORD wDay;
6: WORD wHour;
7: WORD wMinute;
8: WORD wSecond;
9: WORD wMilliseconds;
10: } SYSTEMTIME, *PSYSTEMTIME;
11:
12: SYSTEMTIME t1;
13: GetSystemTime(&t1)
14: CTime curTime(t1);
15: WORD ms = t1.wMilliseconds;
16:
17: SYSTEMTIME sysTm;