求助:想各位大哥请教几个 QueryPerformanceCounter 问题,谢谢!

MJXQJ888 2008-12-15 11:57:40
请教:
在网上看到一段程序:

LARGE_INTEGER litmp; //定义变量
LONGLONG QPart1,QPart2; //定义变量
double dfMinus, dfFreq, dfTim; //定义变量
QueryPerformanceFrequency(&litmp); //取的计算机内部定时器工作频率(获取每秒多少CPU Performance Tick )
dfFreq = (double)litmp.QuadPart; //获得计数器的时钟频率
QueryPerformanceCounter(&litmp); //计数器 计算CPU运行到现在的时间
QPart1 = litmp.QuadPart;// 获得初始值

LARGE)INTEGER litmap;
LONGLONG QPart1,QPaet2;
double dfminus,dfFreq,dfTim;
QueryPerformanceFrequency(&litmap);
QPart = litmap.QuadPart;//
do
{
QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart;//获得中止值
dfMinus = (double)(QPart2-QPart1);
dfTim = dfMinus / dfFreq;// 获得对应的时间值,单位为秒
}while(dfTim<0.000001);


问题1:
为什么要把
dfMinus, dfFreq, dfTim 定义为 double?
定义为 LONGLONG 或者 LARGE_INTEGER 可以吗?

问题2:
dfFreq = (double)litmp.QuadPart; //获得计数器的时钟频率

QuadPart 是什么意思?
为什么要 QuadPart 呢?
还有为什么要 (double)?

问题3:
dfTim = (dfMinus * 100) / dfFreq;//
那么得到的应该是 ms ,是吗?

那么
dfMinus 和 dfFreq 可以都是 LARGE_INTEGER 类型,是不?

问题4:
如果我的电脑连续开几天
那么 LARGE_INTEGER 计数够了不?

谢谢!
...全文
149 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
FWing 2008-12-19
  • 打赏
  • 举报
回复
上面那个是从网上找来的,
32位的这样使用
LARGE_INTEGER litmp ;

litmp.LowPart=0;
litmp.HighPart=0;
FWing 2008-12-19
  • 打赏
  • 举报
回复
LARGE_INTEGER是union;用于表示一64位有符号整数值.其他定义如下:

typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG HighPart;
};
LONGLONG QuadPart;
} LARGE_INTEGER;

如果你有编译器直接支持64位整数可以直接使用QuadPart(64位),否则分别对LowPart(32位)和HighPart(32位)存取,HighPart的最高位为符号位。

表示数的范围:--3689348814741910324到+4611686018427387903

LARGE_INTEGER的值等4000000000,在内存中的布局:

00 28 6B EE 00 00 00 00
(低字节 ) (高字节 )
MJXQJ888 2008-12-17
  • 打赏
  • 举报
回复
我 aa.h 文件定义

LARGE_INTEGER litmp



aa.cpp 初始化

litmp = {0};

有错啊


我应该怎么初始化呢?
herman~~ 2008-12-15
  • 打赏
  • 举报
回复
msdn
FWing 2008-12-15
  • 打赏
  • 举报
回复
建议你查MSDN,对QueryPerformanceFrequency的说明很清楚。
你提到的这些变量MSDN上都有解释。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧