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

  1. 头文件:<Windows.h>
  2. 函数原型:
    /*获取时钟频率,保存在结构LARGE_INTEGER中***/
    WINBASEAPI
    BOOL
    WINAPI
    QueryPerformanceFrequency(
    _Out_ LARGE_INTEGER * lpFrequency
    );
    /*获取从某个时间点开始的时钟周期数,保存在结构LARGE_INTEGER中**/
    WINBASEAPI
    BOOL
    WINAPI
    QueryPerformanceFrequency(
    _Out_ LARGE_INTEGER * lpFrequency
    );
  3. 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获取时钟周期数。

  4. 方法:

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

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

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

    参考代码:

#include <iostream>
#include <ctime>
#include <cstdlib>
#include <Windows.h>
#define SIZE 100
using namespace std;
int a[SIZE];
int b[SIZE];
int c[SIZE];
int main(){
//srand(time(0));
for (int i = ; i < SIZE; ++i){
a[i] = rand();
b[i] = rand();
}
LARGE_INTEGER begain, end, frequency;
QueryPerformanceFrequency(&frequency);
QueryPerformanceCounter(&begain);
#pragma omp parallel for
for (int i = ; i < SIZE; ++i){
c[i] = a[i] * b[i];
}
QueryPerformanceCounter(&end);
cout << "Cost time : " << (double)(end.QuadPart - begain.QuadPart) * / frequency.QuadPart << "ms" << endl;
cout << begain.QuadPart << endl;
}

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

  1. 头文件<sys/time.h>
  2. 函数原型:
    int gettimeofday(struct timeval *tv, struct timezone *tz);
    struct timeval {
    time_t tv_sec; /* seconds */
    suseconds_t tv_usec; /* microseconds */
    };

    参考代码:

#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 * + (double)_tstart.tv_usec / ;
t2 = (double)_tend.tv_sec * + (double)_tend.tv_usec / ;
printf("Cost time : %fms\n", t2 - t1);
return ;
}

参考资料:http://www.ibm.com/developerworks/cn/linux/sdk/rt/part1/index.html

在Windows及Linux下获取毫秒级运行时间的方法的更多相关文章

  1. Linux下得到毫秒级时间--C语言实现(转-度娘818)

    Linux下得到毫秒级时间--C语言实现 原文链接: http://www.cnblogs.com/nwf5d/archive/2011/06/03/2071247.html #ifdef HAVE_ ...

  2. linux下获取微秒级精度的时间【转】

    转自:https://blog.csdn.net/u011857683/article/details/81320052 使用C语言在linux环境下获得微秒级时间 1. 数据结构 int getti ...

  3. 怎样在windows下和linux下获取文件(如exe文件)的具体信息和属性

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/xmt1139057136/article/details/25620685 程序猿都非常懒.你懂的! ...

  4. Windows访问Linux下的共享目录的配置方法

    user安全级别 第一步:安装samba3(如果已经安装就跳过这一步)  [root@rhce2 /]# yum groupinstall "CIFS file server" 第 ...

  5. windows和linux下获取当前程序路径以及cpu数

    #ifdef WIN32 #include <Windows.h> #else #include <stdio.h> #include <unistd.h> #en ...

  6. socket在windows下和linux下的区别

    原文:socket在windows下和linux下的区别 1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h    错误处理:errno.h 2 ...

  7. Linux下的微秒级定时器: usleep, nanosleep, select, pselect

    Linux下的微秒级定时器: usleep, nanosleep, select, pselect 标签: linuxnulldelaystructdate 2012-02-07 23:29 4979 ...

  8. Windows与Linux下文件操作监控的实现

    一.需求分析: 随着渲染业务的不断进行,数据传输渐渐成为影响业务时间最大的因素.究其原因就是因为数据传输耗费较长的时间.于是,依托于渲染业务的网盘开发逐渐成为迫切需要解决的需求.该网盘的实现和当前市场 ...

  9. .net core在Linux下获取AD域信息

    .net core在Linux下获取AD域信息 .net Core 2.1.4 .net core现在System.DirectoryServices只支持Windows平台下使用. 参考: http ...

随机推荐

  1. Go错误处理机制及自定义错误

    错误处理机制: 先看一段代码:看看输出什么? package mainimport "fmt" func test() { num1 := 10 num2 := 0 res := ...

  2. 数据仓库ETL案例学习(二)

    来自案例学习 数据仓库经过ETL成功创建之后,就可以对数据仓库进行多维分析任务. 任务主要分为: 1.设置数据源,并添加分析时所需表到数据视图. 2.创建并设置维度. 3.设置时间维. 4.设置度量属 ...

  3. 找回git rebase --skip消失的代码

    1.git reflog操作,查看提交的历史记录,找到自己的提交 2.强制回退到上一次提交:git reset --hard  791a1fc 或者 git reset --hard  HEAD@{2 ...

  4. H5中图片按照比例收缩,放大

    需求:后台传过来的图片不能够压缩,即使部分被截取也可以 传统方案:设置img元素如下: width: auto; height: auto; max-width: 100%; max-height: ...

  5. weblogicjsp编译:查看编译后的java中间代码

    转自:https://www.xuebuyuan.com/1069484.html 运行自己配置的web应用,往往只能看见weblogic编译之后的class文件.而看不见编译前的java的文件.为了 ...

  6. javaweb各种框架组合案例(四):maven+spring+springMVC+spring data jpa(hibernate)【失败案例】

    一.失败案例 1. 控制台报错信息 严重: Exception sending context initialized event to listener instance of class org. ...

  7. rabbitmq AmqpClient 使用Direct 交换机投递与接收消息,C++代码示例

    // 以DIRECT 交换机和ROUTING_KEY的方式进行消息的发布与订阅 // send // strUri = "amqp://guest:guest@192.168.30.11:8 ...

  8. Sass:RGB颜色函数-Red()、Green()、Blue()函数

    Red() 函数 red() 函数非常简单,其主要用来获取一个颜色当中的红色值.假设有一个 #f36 的颜色,如果你想得到 #f36 中的 red 值是多少,这个时候使用 red() 函数就能很简单获 ...

  9. css3系列--概述

    CSS3分成了不同类别,称为“modules”.而每一个“modules”都有于CSS2中额外增加的功能,以及向后兼容.CSS3早于1999年已经开始制订.[18]直到2011年6月7日,CSS 3 ...

  10. java使用对象类型作为方法的参数