文档章节

精确计算计算机时钟

NiuYoohoo
 NiuYoohoo
发布于 2017/05/23 14:20
字数 675
阅读 19
收藏 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
使用高级定时器测量代码时间

本文我们将学习如何使用高级定时器来准确测量短周期事件的处理。 衡量一个应用程序性能的常规做法是关键位置或瓶颈的地方放置计时代码,然后用优化前后的代码执行时间来反应执行效率。现在有...

ShawnFeng
2013/06/26
522
0
单片机 时间周期、机器周期、指令周期详解

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

whalefall
2018/04/11
0
0
Active Directory之域时钟

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

技术小甜
2017/11/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

漏洞防御与修复工作

漏洞管理工作是企业安全建设必不可少的一环,在风险管理工作中,漏洞管理能够防患于未然,企业对漏洞管理有着广泛的基础建设和实践经验。但随着攻防技术的发展,传统漏洞管理的安全技术和管理...

linuxprobe16
14分钟前
0
0
MicroPython技术及应用前景

1 Micropython技术是什么? MicroPython极精简高效的实现了Python3语言。它包含Python标准库的一小部分,能在单片机和受限环境中运行。 1.1 MicroPython发展 由剑桥大学的理论物理学家乔治....

bodasisiter
20分钟前
0
0
跟我学Spring Cloud(Finchley版)-13-通用方式使用Hystrix

本节详细讲解使用Hystrix的通用方式。 简介 Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。Hystrix主要...

周立_ITMuch
28分钟前
0
0
🛠️Hanjst/汉吉斯特更新加JavaScript运行时优化等

这是 Hanjst/汉吉斯特 发布以来的首个主要升级更新版本。这次的主要升级更新的内容包括移除HTML Comments注释行, 优化在 Hanjst include模板文件时的JavaScript运行时环境。 Hanjst 在设计和...

wadelau
今天
2
0
OSChina 周六乱弹 —— 舔狗是没有好下场的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @我没有抓狂 :#今天听什么# #今天听这个# 分享 Nirvana 的歌曲《Smells Like Teen Spi...》 《Smells Like Teen Spi...》- Nirvana 手机党少...

小小编辑
今天
463
13

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部