加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么我的Stopwatch.Frequency这么低?

发布时间:2020-12-15 17:48:44 所属栏目:百科 来源:网络整理
导读:Debug.WriteLine("Timer is high-resolution: {0}",Stopwatch.IsHighResolution); Debug.WriteLine("Timer frequency: {0}",Stopwatch.Frequency); 结果: Timer is high-resolution: True Timer frequency: 2597705 This文章(从2005!)提到3579545的频率,比
Debug.WriteLine("Timer is high-resolution: {0}",Stopwatch.IsHighResolution);
  Debug.WriteLine("Timer frequency: {0}",Stopwatch.Frequency);

结果:

Timer is high-resolution: True
  Timer frequency: 2597705

This文章(从2005!)提到3579545的频率,比我的数百万. This博客文章提到的频率为3,325,040,000,这是疯狂的.

为什么我的频率比较低?我在一台i7 920机器上,应该不会更快?

解决方法

3,579,545是魔术数字.这是Hertz在将其除以3之前的频率,并将其馈入原始IBM PC中的8053定时器芯片.这个奇怪的数字并不是意外地选择的,是在美国和日本使用的NTSC电视系统中的 color burst signal的频率. IBM工程师正在寻找廉价的晶体来实现振荡器,没有比每个电视机中使用的那样便宜.

一旦IBM克隆变得广泛使用,设计人员仍然需要选择相同的频率.许多MS-DOS软件依赖于定时器滴答作响.直接面对芯片是一个普遍的罪行.

一旦Windows出现,就会改变. Windows 2的一个版本是第一个虚拟化定时器芯片的版本.换句话说,软件不允许直接对定时器芯片进行寻址.处理器配置为以保护模式运行,并截获尝试使用I / O指令.运行内核代码,允许指令的返回值被伪造.现在有可能有多个程序使用定时器,而不会踩在彼此的脚趾.打破对硬件实际实现依赖的重要第一步.

Win32 API(Windows NT 3.1和Windows 95)使用API??,QueryPerformanceCounter()和QueryPerformanceFrequency())对定时器的形式化访问.内核级组件硬件适配层允许BIOS通过该频率.现在,硬件设计人员有可能真正放弃对准确频率的依赖.这花了很长时间,大约2000年左右,绝大多数机器仍然拥有传统的速度.

但是,在PC设计中削减成本的永无止境的追求就结束了.如今,硬件设计师只是选择在芯片组中容易获得的任何频率. 3,000将是这样一个数字,最有可能是CPU时钟速率.像这样的高频率在便宜的设计中是常见的,特别是那些具有AMD内核的设计.你的电话号码是非常不寻常的,有可能你的机器不便宜.而且定时器更准确,CPU时钟具有典型的电子元件公差.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读