在Windows及Linux下获取毫秒级运行时间的方法
在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 <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下获取毫秒级运行时间的方法
- 头文件<sys/time.h>
- 函数原型:
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下获取毫秒级运行时间的方法的更多相关文章
- Linux下得到毫秒级时间--C语言实现(转-度娘818)
Linux下得到毫秒级时间--C语言实现 原文链接: http://www.cnblogs.com/nwf5d/archive/2011/06/03/2071247.html #ifdef HAVE_ ...
- linux下获取微秒级精度的时间【转】
转自:https://blog.csdn.net/u011857683/article/details/81320052 使用C语言在linux环境下获得微秒级时间 1. 数据结构 int getti ...
- 怎样在windows下和linux下获取文件(如exe文件)的具体信息和属性
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/xmt1139057136/article/details/25620685 程序猿都非常懒.你懂的! ...
- Windows访问Linux下的共享目录的配置方法
user安全级别 第一步:安装samba3(如果已经安装就跳过这一步) [root@rhce2 /]# yum groupinstall "CIFS file server" 第 ...
- windows和linux下获取当前程序路径以及cpu数
#ifdef WIN32 #include <Windows.h> #else #include <stdio.h> #include <unistd.h> #en ...
- socket在windows下和linux下的区别
原文:socket在windows下和linux下的区别 1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h 错误处理:errno.h 2 ...
- Linux下的微秒级定时器: usleep, nanosleep, select, pselect
Linux下的微秒级定时器: usleep, nanosleep, select, pselect 标签: linuxnulldelaystructdate 2012-02-07 23:29 4979 ...
- Windows与Linux下文件操作监控的实现
一.需求分析: 随着渲染业务的不断进行,数据传输渐渐成为影响业务时间最大的因素.究其原因就是因为数据传输耗费较长的时间.于是,依托于渲染业务的网盘开发逐渐成为迫切需要解决的需求.该网盘的实现和当前市场 ...
- .net core在Linux下获取AD域信息
.net core在Linux下获取AD域信息 .net Core 2.1.4 .net core现在System.DirectoryServices只支持Windows平台下使用. 参考: http ...
随机推荐
- spring容器的启动过程
spring的启动过程: 首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环 ...
- Spring学习(三)--高级装配
一.Spring profile 在开发软件的时候,有一个很大的挑战就是将应用程序从一个环境迁 移到另外一个环境.开发阶段中,某些环境相关做法可能并不适合迁 移到生产环境中,甚至即便迁移过去也无法正常 ...
- [Codeforces722E] Research Rover (dp+组合数学)
[Codeforces722E] Research Rover (dp+组合数学) 题面 给出一个N*M的方格阵,从(1,1)出发,到(N,M)结束,从(x,y)只能走到(x+1,y)或(x,y+1) ...
- PEP8规范总结
PEP8规范总结 代码编排 1 缩进.4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格. 2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号.换行点要在操作符的 ...
- 【记录】jd-gui解析class文件 报INTERNAL ERROR
用GUI查看class文件时候出现INTERNAL ERROR 错误,是因为jd-gui解析不了该class文件,报错问题如下 解决方式:换个解析器,推荐luyten解析 下载地址:https://g ...
- smbmnt - 装载 SMB 文件系统的协助工具
总览 smbmnt mount-point [ -s share ] [ -r ] [ -u uid ] [ -g gid ] [ -f mask ] [ -d mask ] 描述 smbmnt 用于 ...
- Nexus搭建Maven私服中央仓库
一.概述 1.概要 现在的项目基本都是用Maven来管理工程,这样一来在公司内容搭建一个私服就非常有必要了,这样一来可以管理公司内部用的JAR包,也可以管理第三方的各种JAR来,以免每次都要从外网的仓 ...
- 【Leetcode周赛】从contest-71开始。(一般是10个contest写一篇文章)
Contest 71 () Contest 72 () Contest 73 (2019年1月30日模拟) 链接:https://leetcode.com/contest/weekly-contest ...
- TCP协议之三次握手四次挥手
一.TCP协议简述 TCP协议位于传输层用来建立传输数据的通道以及传输数据,那么在这一层的tcp协议就涉及到客户端与服务端通信的连接,数据的传输.关闭连接. 通信的连接使用的就是客户端与服务端的三次握 ...
- 爬虫技术:cookies池的维护
一:为什么要维护cookie 1.登录才能爬取内容 2.爬取频繁会被封号. 3.需要维护多个账号的cookie,实现大规模抓取 二:cookies的要求 1.自动登录更新 2.定期筛选验证 3.提供外 ...