吓我一跳,电脑主频才3.5M,求知情人
_LARGE_INTEGER time_start; /*开始时间*/_LARGE_INTEGER time_over; /*结束时间*/
double dqFreq; /*计时器频率*/
double t_t;
LARGE_INTEGER f; /*计时器频率*/
QueryPerformanceFrequency(&f);
dqFreq=(double)f.QuadPart;
QueryPerformanceCounter(&time_start);
Sleep(1000);/*循环耗时*/
QueryPerformanceCounter(&time_over);
t_t=(time_over.QuadPart-time_start.QuadPart)/dqFreq;//单位为秒
用这段程序测得的主频,dqFreq=3.579545M,悲剧了,哪位大虾给个正解 没人回帖,伤了个心,我从电脑属性查看,主频为2.81GHZ 3.579545M
这是频率好眼熟吧。 DTMF就是用的这个频率! 你这种测试方法就不对 QueryPerformanceFrequency是获取计时器的晶振频率, 不是获取计算机的主频, 你不要搞错了. 那个是Performance Counter的频率,不是CPU主频。
最早的IBM PC采用的CPU 8088最高主频是5MHz,IBM为了兼容视频输出的需要,采用了NTSC色度副载波3.579545MHz的4倍频14.31818MHz为主晶振,经过时钟发生器8284的3分频后得到比较接近5MHz的4.77MHz作为CPU主频。
由于x86向下兼容的设计原则,这个频率在x86系统中一直保留至今,因此现在市面上很多主板的主晶振还是跟30年前一样的14.318MHz,你不妨打开你的电脑机箱找找这个晶振。
后来ACPI规范直接采用了3.579545MHz作为电源管理定时器的时钟,你查到的Performance Counter Frequency就是这个了。 skylly3 发表于 2012-5-24 10:45 static/image/common/back.gif
QueryPerformanceFrequency是获取计时器的晶振频率, 不是获取计算机的主频, 你不要搞错了....
但是同样的程序,在另一台电脑上得到的却是2.4G的主频 riverblue2010 发表于 2012-5-24 11:10 static/image/common/back.gif
但是同样的程序,在另一台电脑上得到的却是2.4G的主频
新的电脑除了ACPI的PM Timer外,还引入了高精度事件定时器HPET,同时CPU也内置了时间戳功能,HPET的频率是10MHz以上,CPU时间戳则是与主频同步,因此系统如果识别到这两个精度更高的新硬件,就不会用ACPI那个了。 楼上的大虾正解,总算明白了,多谢{:handshake:} gzhuli 真是什么都懂啊!! 以后百度谷歌都不用了,直接呼叫gzhuli{:lol:} 哇哦~~咕唧霖知道的真多~~ 古哥接近与谷歌了{:tongue:} skynet 发表于 2012-5-24 11:59 static/image/common/back.gif
古哥接近与谷歌了
以上信息大部分来源于谷歌。 {:titter:}
页:
[1]