gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:32:05 28 4
gpt4 key购买 nike

  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 是一个神奇的数字。这是除以 3 并将其输入原始 IBM PC 中的 8053 定时器芯片之前的赫兹频率。奇怪的数字不是偶然选择的,它是 color burst signal 的频率。在美国和日本使用的 NTSC 电视系统中。 IBM 工程师正在寻找一种廉价的晶体来实现振荡器,没有比每台电视机中使用的晶体更便宜的了。

一旦 IBM 的克隆产品被广泛使用,他们的设计师选择相同的频率仍然很重要。许多 MS-DOS 软件都依赖于以该速率计时的计时器。直接对芯片进行寻址是一种常见的犯罪行为。

Windows 出现后,情况发生了变化。 Windows 2 的一个版本是第一个虚拟化定时器芯片的版本。换句话说,不再允许软件直接寻址定时器芯片。处理器被配置为在保护模式下运行并拦截了使用 I/O 指令的尝试。相反,运行内核代码,允许伪造指令的返回值。现在可以让多个程序使用计时器,而不会互相踩到脚趾。打破对硬件实际实现方式的依赖的重要的第一步。

Win32 API(Windows NT 3.1 和 Windows 95)通过 API QueryPerformanceCounter() 和 QueryPerformanceFrequency() 正式访问计时器。内核级组件,即硬件适配层,允许 BIOS 传递该频率。现在,硬件设计人员可以真正摆脱对确切频率的依赖。顺便说一句,这花了很长时间,大约在 2000 年,绝大多数机器仍然具有遗留速率。

但是,对削减 PC 设计成本的永无止境的追求终结了这一点。如今,硬件设计人员只需选择芯片组中恰好可用的任何频率。 3,325,040,000 是这样一个数字,它很可能是 CPU 时钟频率。像这样的高频在廉价设计中很常见,尤其是那些具有 AMD 内核的设计。您的号码很不寻常,很可能您的机器并不便宜。而且计时器更加准确,CPU 时钟具有典型的电子元件容差。

关于c# - 为什么我的 Stopwatch.Frequency 这么低?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2345599/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com