文档章节

精确计算计算机时钟

NiuYoohoo
 NiuYoohoo
发布于 2017/05/23 14:20
字数 675
阅读 16
收藏 0
点赞 0
评论 0

获取定时器频率

Syntax

BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);

Parameters

[out] Pointer to a variable that receives the current performance-counter frequency, in counts per second. If the installed hardware does not support a high-resolution performance counter, this parameter can be zero.

Return Value

If the installed hardware supports a high-resolution performance counter, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. For example, if the installed hardware does not support a high-resolution performance counter, the function fails.

Description

The QueryPerformanceFrequency function retrieves the frequency of the high-resolution performance counter, if one exists. The frequency cannot change while the system is running.

获取定时器数值

Syntax

BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);

Parameters

[out] Pointer to a variable that receives the current performance-counter value, in counts.

Return Value

If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError.

Description

The QueryPerformanceCounter function retrieves the current value of the high-resolution performance counter.

#注意选项
#On a multiprocessor computer, it should not matter which processor is called. However,
#you can get different results on different processors due to bugs in the 
#basic input/output system (BIOS) or the hardware abstraction layer (HAL). 
#To specify processor affinity for a thread, use the SetThreadAffinityMask function. 
#=============================================================================================
#在多处理器计算机上,不应该考虑调用了哪个处理器。但是,由于基本输入/输出系统(BIOS)或硬件抽象层(HAL)的bug
#你可能在不同的处理器上得到不同的结果。指定一个线程处理器亲和性,使用setthreadaffinitymask功能。
#就可以避免这个bug
#DWORD_PTR SetThreadAffinityMask(HANDLE hThread, DWORD_PTR dwThreadAffinityMask);
#简单来说就是设置线程到指定CPU运行。SetThreadAffinityMask(hThread0, 0x00000001);//限制到CPU1上运行

Example

#include <windows.h>
#include <iostream>
using namespace std;

int main()
{
	LARGE_INTEGER freq;
	LARGE_INTEGER start;
	LARGE_INTEGER end;
	SetThreadAffinityMask(GetCurrentThread(), 0x1);
	QueryPerformanceFrequency(&freq);
	QueryPerformanceCounter(&start);
	Sleep(1789);
	QueryPerformanceCounter(&end);
	
	cout << ((end.QuadPart - start.QuadPart) / (double)(freq.QuadPart));
	return 0;
}
/*
直接用代码区别define和typedef,define为简单的替换所以_UNAME被替换为空白
所以第一位匿名结构体,方便用户直接读取联合体中结构体中的数据若支持64位可以
直接使用QuadPart,不支持的话则自行通过结构体装换使用。
*/
#define _UNAME
typedef union _LARGE_INTEGER 
{
	struct 
	{
		DWORD LowPart;
		LONG HighPart;
	} _UNAME;
	struct 
	{
		DWORD LowPart;
		LONG HighPart;
	} u;
	LONGLONG QuadPart;
} LARGE_INTEGER;

获取操作系统时钟

Syntax

DWORD WINAPI GetTickCount(void);

Return Value

The return value is the number of milliseconds that have elapsed since the system was started.

#The resolution is limited to the resolution of the system timer. 
#This value is also affected by adjustments made by the GetSystemTimeAdjustment function.
#The elapsed time is stored as a DWORD value. Therefore, the time will wrap around to zero 
#if the system is run continuously for 49.7 days. To avoid this problem, use GetTickCount64.
#Otherwise, check for an overflow condition when comparing times.

获取进程时钟

Syntax

clock_t clock( void );

Return Value

The elapsed wall-clock time since the start of the process (elapsed time in seconds times CLOCKS_PER_SEC). If the amount of elapsed time is unavailable, the function returns –1, cast as a clock_t.

Description

The clock function tells how much time the calling process has used. A timer tick is approximately equal to 1/CLOCKS_PER_SEC second. In versions of Microsoft C before 6.0, the CLOCKS_PER_SEC constant was called CLK_TCK.

© 著作权归作者所有

共有 人打赏支持
NiuYoohoo
粉丝 1
博文 49
码字总数 18987
作品 0
赣州
算法导论第一章心得

算法 算法就是任何良好定义的计算过程,该过程取某个值或者值得集合作为输入,并且产生某个值或者值的集合作为输出。即,算法就是把输入转换成输出的计算步骤所构成的序列。 算法是解决计算问...

SVD
2016/06/17
82
0
Net 实现纳秒级别计算

1)建立VC.NET 托管类库 using namespace System; namespace MLTimerDot { //得到计算机启动到现在的时钟周期 unsigned int64 GetCycleCount(void) { asm emit 0x0F asm emit 0x31 } //声明 ......

mikelij
2009/03/10
0
0
单片机 时间周期、机器周期、指令周期详解

时钟周期 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。 在一个时...

whalefall
04/11
0
0
VC++获得微秒级时间的方法与技巧探讨

获得微秒级的时间 收藏 Win 下建议如下方式: http://www.vckbase.com/document/viewdoc/?id=1301 VC中基于 Windows 的精确定时 中国科学院光电技术研究所 游志宇 在工业生产控制系统中,有许...

长平狐
2013/01/06
161
0
Active Directory之域时钟

文档目的 在域环境中,服务器和客户端时间同步非常重要,如果在办公网络中出现时间不统一会出现计算机无法登陆域、域中的应用无法访问等,甚至最严重的可能出现数据库数据写入错误,可能会对...

技术小甜
2017/11/17
0
0
NTP 守护进程--OpenNTPD

OpenNTPD是一个Unix系统网络时间协议(NTP)实现的守护进程,可以使计算机系统的本地时钟与远程NTP服务器同步。它也可以作为一个NTP兼容客户端的NTP服务器。 OpenNTPD作为OpenBSD计划的一部分...

红薯
2015/01/10
811
0
ntp同步(一)

Linux时钟简介: Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟两种。系统时间是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的那个主板硬件...

wannneg
2016/04/02
91
0
AD DS 域控与成员计算机的时间一致性

一、工作组下的计算机与TENKNET时间同步 我们经常会发现计算机的时钟(日期和时间)不正确了。这种情况有时候是人为现象,有时候是计算机的问题。对于工作组下的PC机,时钟的偏差可能影响不大...

z00w00
2013/01/11
0
0
linux内核的nohz与hres

设计linux内核的那帮家伙想的可真周到啊,前面说过,linux内核的性格就是激情,只要硬件设计的足够灵活,那么设计者就会尽可能的发挥,不放过任 何可自由发挥的点和死角,而且他们从来不管后...

晨曦之光
2012/04/10
320
0
CFS调度算法的思想和细节

今天在邮件列表里面有位朋友问了一个问题,问题表述如下: 在唤醒进程的时候,发现在checkpreemptwakeup()中.会将 cfsrq->next设置为唤醒的进程,cfsrq->last设置为当前的运行进程.然后将要唤醒...

晨曦之光
2012/04/10
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

pbgo: 基于Protobuf的迷你RPC/REST框架

https://www.oschina.net/p/pbgo

chai2010
31分钟前
0
0
rsync工具介绍、常用选项以及通过ssh同步

linux下的文件同步工具 rsync rsync是非常实用的一个同步工具,可以从a机器到b机器传输一个文件,也可以备份数据,系统默认没有这个工具,要使用命令 yum install -y rsync 安装。 rsync的命...

黄昏残影
46分钟前
0
0
OSChina 周四乱弹 —— 表妹要嫁人 舅妈叮嘱……

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @哈哈哈哈哈嗝:一定要听——The Pancakes的单曲《咁咁咁》 《咁咁咁》- The Pancakes 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :...

小小编辑
今天
194
4
流利阅读笔记30-20180719待学习

重磅:让人类得老年痴呆的竟是它? Lala 2018-07-19 1.今日导读 去年奥斯卡最佳动画长片《寻梦环游记》里有一句经典台词:“比死亡更可怕的,是遗忘”。在电影中,年迈的曾祖母会重复说一样的...

aibinxiao
今天
3
0
1.16 Linux机器相互登录

Linux机器之间以密码方式互相登录 运行命令#ssh [ip address],标准命令:#ssh [username]@ip, 如果没有写用户名,则默认为系统当前登录的用户 命令#w查看系统负载,可查看到连接到该主机的...

小丑鱼00
今天
0
0
about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
2
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
1
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部