Windows高精度时钟

2023-05-16

封装几个代码,方便以后查询和使用

Windows高精度时钟 精度:<1us 微秒

1.1Function 1统计一段代码的CPU时间

	LARGE_INTEGER freq;
	LARGE_INTEGER beginTime;
	LARGE_INTEGER endTime;

	QueryPerformanceFrequency(&freq);
	QueryPerformanceCounter(&beginTime);
	//测试代码块时间 Begin
	
    //测试代码块时间 End
    QueryPerformanceCounter(&endTime);
    double second = (double)(endTime.QuadPart - beginTime.QuadPart) / (double)freq.QuadPart;

1.2更方便的宏定义

#define COUNT_BEGIN  LARGE_INTEGER freq,beginTime,LARGE_INTEGER endTime;\
QueryPerformanceFrequency(&freq);\
QueryPerformanceCounter(&beginTime);

#define COUNT_END QueryPerformanceCounter(&endTime);
#define SHOW_TIME_COUNT printf("%llf second passed\n",(double)(endTime.QuadPart - beginTime.QuadPart) / (double)freq.QuadPart;);

2.1Function 2高精度Sleep()

LARGE_INTEGER freq;  
LARGE_INTEGER start, end;  
QueryPerformanceFrequency(&freq);  
unsigned int s = 0; //此处填入延时的秒数
unsigned int ms = 0; //此处填入延时的毫秒数
unsigned int us = 100000; //此处填入需要延时的微秒数  
us += ms*1000+s*1000*1000;
LONGLONG count = (us * freq.QuadPart) / (1000 * 1000);  
QueryPerformanceCounter(&start);  
count = count + startQuadPart ;  
do  
{  
   QueryPerformanceCounter(&end);  
}while(end.QuadPart< count);  

2.2 更方便的宏定义

#define SLEEP_S(S)
LARGE_INTEGER freq;  \
LARGE_INTEGER start, end;  \
QueryPerformanceFrequency(&freq);  \
LONGLONG count = (S*1000*1000 * freq.QuadPart) / (1000 * 1000);  \
QueryPerformanceCounter(&start);  \
count = count + startQuadPart ;  \
do  \
{  \
   QueryPerformanceCounter(&end);  \
}while(end.QuadPart< count);  

#define SLEEP_MS(MS)
LARGE_INTEGER freq;  \
LARGE_INTEGER start, end;  \
QueryPerformanceFrequency(&freq);  \
LONGLONG count = (S*1000 * freq.QuadPart) / (1000 * 1000);  \
QueryPerformanceCounter(&start);  \
count = count + startQuadPart ;  \
do  \
{  \
   QueryPerformanceCounter(&end);  \
}while(end.QuadPart< count);  

#define SLEEP_US(US)
LARGE_INTEGER freq;  \
LARGE_INTEGER start, end;  \
QueryPerformanceFrequency(&freq);  \
LONGLONG count = (US * freq.QuadPart) / (1000 * 1000);  \
QueryPerformanceCounter(&start);  \
count = count + startQuadPart ;  \
do  \
{  \
   QueryPerformanceCounter(&end);  \
}while(end.QuadPart< count);  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows高精度时钟 的相关文章

  • 为什么非交互式批处理脚本认为我按下了 Control-C?

    因此 当输出日志中突然出现以下内容时 我的批处理脚本运行得很好 21 27 13 99 c apps w7lab scripting gt some command Error 3221225786 CTerminate batch job
  • UnicodeDecodeError:“charmap”编解码器|安装 pip python-stdnum==1.8 时出错

    我对编程还很陌生 所以请耐心等待 当我为正在使用的模块安装一些必需的软件包时 我无法安装python stdnum 1 8 我收到以下错误消息 File C Users 59996 AppData Local Programs Python
  • 在Windows cmd中获取精确到毫秒的系统时间

    我试图在 Windows cmd 中将系统时间精确 到毫秒 我知道可以使用以下方法获得厘秒精度 echo time 我发现其他问题提出了完全相同的问题 但没有答案可以完全回答该问题 这是我到目前为止发现的 该解决方案仅适用于厘秒精度 与我上
  • Hadoop Windows 设置。运行 WordCountJob 时出错:“任何本地目录中都没有可用空间”

    我正在按照此视频教程尝试在我的计算机上设置 hadoop 如何在 Windows 10 上安装 Hadoop https www youtube com watch v zujpglKP0Nw 我已经成功设置它 从 sbin 目录执行 st
  • Windows 上 PE 文件 (exe) 的最小文件大小是多少?以及最小内存分配? [复制]

    这个问题在这里已经有答案了 Windows 上 PE 文件 exe 的最小文件大小是多少 以及最小内存分配 我 使用 VS 10 附带的 MASM ml exe 和 link exe 组装了以下代码 我不能忽略 kernel32 lib 和
  • Visual C++ free 和 malloc 的线程安全性?

    有谁知道 free 和 malloc 在 Visual C 2010 上是否是线程安全的 我遇到了奇怪的问题 内存被损坏 我几乎认为这是唯一的可能性 有谁知道安全装置是否可以打开和关闭以及如何打开和关闭 前提是您链接的是线程安全库 http
  • 注册表碎片整理程序[重复]

    这个问题在这里已经有答案了 这是出于好奇 但我见过几个 其中一些非常流行 称为注册表碎片整理程序的软件 虽然我可以看到它们提供的好处 但我很好奇您到底是如何进行注册表碎片整理的 请注意 我并不是要求提供软件名称 只是询问其如何以编程方式完成
  • WMI 不返回 Windows 7 64 上的所有安装程序

    今天 我们尝试使用以下脚本列出每个虚拟机上所有已安装的程序来查询 WMI 我们发现它会列出所有 64 位应用程序 以及一些 32 位应用程序 但并非所有应用程序 32 位 64 位 都会列出 param string ExportPath
  • LNK2019:函数 ___tmainCRTStartup 中引用了无法解析的外部符号 _main

    我有以下错误 LNK2019 函数 tmainCRTStartup 中引用了无法解析的外部符号 main 有很多与此错误相关的线程 但这些解决方案都不适合我 而且 没有人解释为什么会出现这个错误 I tried wWinMainCRTSta
  • endl 不适用于 wstring (unicode)

    这是代码 std ofstream f file1 txt f lt lt 123 lt
  • Windows 相当于 Unix find 命令,用于搜索多种文件类型

    虽然在 Windows 中安装了 cygwin 可以提供大部分 unix 命令 但我仍然想知道如何使用 Windows find 命令在一个命令中搜索多个文件类型 ie find name cpp o name h o name java
  • 在 Windows 上使用“perl6”命令和 Git Bash

    使用 Windows 我安装了乐道之星 https rakudo org files和 Git 并确保C rakudo bin and C rakudo share perl6 site bin位于我的 Path 环境变量中 现在 输入pe
  • 无法启动 Windows 快捷方式

    我正在尝试使用 python 启动 Windows 我已经尝试了 os system subprocess call os startfile 等多种方法 但总是收到错误消息 指出路径不存在 我知道路径是正确的 因为我尝试在 CMD EXE
  • 原子的 C++ 内存屏障

    在这方面我是个新手 谁能提供以下内存屏障之间差异的简化解释 窗户MemoryBarrier 围栏 mm mfence 内联汇编asm volatile memory 内在的 ReadWriteBarrier 如果没有简单的解释 一些好文章或
  • 多个原始输入窗口接收器

    我有一个仅消息窗口 ATL CWindowImpl 它使用 RIDEV INPUTSINK 标志将自身注册为原始输入 这意味着无论该窗口是否是前台窗口 它都会获取所有输入 当该窗口只有一个实例时 这非常有效 但是 当我创建超过 1 个窗口实
  • 无法在 cmd 中通过管道传递 cmdlet 对象

    我正在使用这个 powershell 命令来获取特定的用户配置文件 获取 WmiObject Class Win32 UserProfile Where Object LocalPath eq C Users Pela 但是当我通过调用 p
  • Perl:管理 Windows 上的路径编码

    我正在努力处理包含非英文字符的路径 Activestate Perl Windows XP 如何打开 写入 复制等位于包含希腊语 俄语 法语重音字符的路径中的文件 假设我要将 text txt 文件复制到的目录是 C Documents a
  • 从某个文件夹启动随机批处理文件

    问题是这样的 我有一个名为 abc 的文件夹 其中包含几个批处理文件 它们的命名如下 abc1 batabc2 batabc3 batabc4 bat 等等 我需要一个脚本 当我单击它时 它会随机启动其中一个批处理文件 我需要的脚本将存储在
  • 虚拟内存澄清——大连续内存的分配

    我有一个应用程序 我必须在 Windows 上分配 使用运算符 new 相当大的内存空间 数百 MB 该应用程序是 32 位 我们现在不使用 64 位 即使在 64 位系统上也是如此 我启用了 LARGEADDRESSAWARE 链接器选项
  • 微软怎么能说WinAPI中一个字的大小是16位呢?

    我刚刚开始学习WinAPI 在MSDN中 对WORD数据类型提供了以下解释 WORD16 位无符号整数 范围是十进制 0 到 65535 该类型在 WinDef h 中声明如下 typedef 无符号短 WORD 很简单 而且它与我一直在使

随机推荐