您的位置:首页 > 运维架构 > Linux

在Windows及Linux下获取毫秒级运行时间的方法

2016-05-11 22:19 549 查看

在Windows下获取毫秒级运行时间的方法

头文件:<Windows.h>

函数原型:

/*获取时钟频率,保存在结构LARGE_INTEGER中***/
WINBASEAPI
BOOL
WINAPI
QueryPerformanceFrequency(
_Out_ LARGE_INTEGER * lpFrequency
);
/*获取从某个时间点开始的时钟周期数,保存在结构LARGE_INTEGER中**/
WINBASEAPI
BOOL
WINAPI
QueryPerformanceFrequency(
_Out_ LARGE_INTEGER * lpFrequency
);


LARGE_INTEGER结构

typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG HighPart;
} DUMMYSTRUCTNAME;
struct {
DWORD LowPart;
LONG HighPart;
} u;
#endif //MIDL_PASS
LONGLONG QuadPart;
} LARGE_INTEGER;


LARGE_INTEGER为一个union,我们将使用成员QuadPart获取时钟周期数。

方法:

    1) 调用QueryPerformanceFrequency()获取时钟频率

    2) 在待测部分的首尾分别调用QueryPerformanceCounter()获取两个时间点的时钟周期数

    3) 将两个节点的时钟周期数差值除以时钟频率即可得到测试部分的运行时间

    参考代码:

#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
int main()
{
struct timeval _tstart, _tend;
double t1, t2;

gettimeofday(&_tstart, NULL);

// ToDo..

gettimeofday(&_tend, NULL);

t1 = (double)_tstart.tv_sec * 1000 + (double)_tstart.tv_usec / 1000;
t2 = (double)_tend.tv_sec * 1000 + (double)_tend.tv_usec / 1000;
printf("Cost time : %fms\n", t2 - t1);
return 0;
}


View Code
参考资料:http://www.ibm.com/developerworks/cn/linux/sdk/rt/part1/index.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: