windows计算程序运行时间

本文介绍了多种在Windows系统下计算程序运行时间的方法,包括GetTickCount、timeGetTime、clock()函数,以及通过汇编语言获取CPU计数器的值进行高精度计时。还提到了使用QueryPerformanceFrequency和QueryPerformanceCounter实现微秒级别的计时精度。
摘要由CSDN通过智能技术生成

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值