riverblue2010 发表于 2012-5-24 09:46:00

吓我一跳,电脑主频才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,悲剧了,哪位大虾给个正解

riverblue2010 发表于 2012-5-24 09:59:13

没人回帖,伤了个心,我从电脑属性查看,主频为2.81GHZ

bg6agf 发表于 2012-5-24 10:24:49

3.579545M

这是频率好眼熟吧。

bmagui 发表于 2012-5-24 10:38:51

DTMF就是用的这个频率!

kebaojun305 发表于 2012-5-24 10:44:19

你这种测试方法就不对

skylly3 发表于 2012-5-24 10:45:34

QueryPerformanceFrequency是获取计时器的晶振频率, 不是获取计算机的主频, 你不要搞错了.

gzhuli 发表于 2012-5-24 11:08:52

那个是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就是这个了。

riverblue2010 发表于 2012-5-24 11:10:10

skylly3 发表于 2012-5-24 10:45 static/image/common/back.gif
QueryPerformanceFrequency是获取计时器的晶振频率, 不是获取计算机的主频, 你不要搞错了....

但是同样的程序,在另一台电脑上得到的却是2.4G的主频

gzhuli 发表于 2012-5-24 11:14:54

riverblue2010 发表于 2012-5-24 11:10 static/image/common/back.gif
但是同样的程序,在另一台电脑上得到的却是2.4G的主频

新的电脑除了ACPI的PM Timer外,还引入了高精度事件定时器HPET,同时CPU也内置了时间戳功能,HPET的频率是10MHz以上,CPU时间戳则是与主频同步,因此系统如果识别到这两个精度更高的新硬件,就不会用ACPI那个了。

riverblue2010 发表于 2012-5-24 11:25:29

楼上的大虾正解,总算明白了,多谢{:handshake:}

jiaowoxiaolu 发表于 2012-5-24 11:27:44

gzhuli 真是什么都懂啊!! 以后百度谷歌都不用了,直接呼叫gzhuli{:lol:}

huayuliang 发表于 2012-5-24 11:37:18

哇哦~~咕唧霖知道的真多~~

skynet 发表于 2012-5-24 11:59:54

古哥接近与谷歌了{:tongue:}

gzhuli 发表于 2012-5-24 12:02:27

skynet 发表于 2012-5-24 11:59 static/image/common/back.gif
古哥接近与谷歌了

以上信息大部分来源于谷歌。 {:titter:}
页: [1]
查看完整版本: 吓我一跳,电脑主频才3.5M,求知情人