1

当我在一台机器上运行我编写的应用程序时,Windows 7 Professional 32 位 SP 1,它运行得很好并且使用了系统中 100% 的 CPU。

但是,当我在 Windows Server 2008 上运行相同的应用程序时,我没有看到 100% 的 CPU 使用率。

为什么它也不使用 100% 的 CPU,我怎样才能做到这一点?

4

2 回答 2

6

好吧,通常你不想使用 100% 的 CPU,因为你想在负载增加时留出自己的空间。通常一个程序不会一直使用 CPU,因为它会开始受到其他因素的限制,通常是 I/O。

以 GUI 应用程序为例,直到用户单击某些东西,它什么也不做,然后继续等待用户输入。

你可能会愚蠢地把它写成

while(true){
  if(there is user input){
    use the user input
  }
}

这会烧毁 CPU,因为它会非常快地运行这个循环。因此,精明的购物者可能会意识到用户可以应对点击和响应之间长达 50 毫秒的延迟。所以加入某种睡眠,比如......

while(true){
  if(there is user input){
    use the user input
  }
  sleep for 50 ms
}

重要的是让 CPU 有机会做其他事情,因为它们很重要,否则你的程序就像那个只是把头伸到冰淇淋机下面的胖孩子,从不让任何人吃到美味可口的冰淇淋。

编辑

我爱我一个比喻,所以这里有一个给你。

将 CPU 使用率视为道路,将程序视为汽车,如果道路都畅通无阻,那么您的汽车燃烧橡胶并尽可能快地在街道上行驶是相对安全的。车越多,他们就越要为对方让步,让等待人们关闭或打开。

如果您将道路 (CPU) 专用于赛车(游戏)之类的东西,您会倾向于删除行人和非赛车(其他程序)之类的东西,以便您可以更安全地尽可能快地行驶。

现在,我从来没有说过我擅长隐喻。记住安全驾驶,享受冰淇淋!

于 2012-07-18T08:55:31.913 回答
1

程序使用的 CPU 百分比与它的效率无关。

它与CPU有关,只是有时感觉像是在做其他事情

事实上,如果您的程序执行任何 I/O,CPU 百分比将下降,因为当您的程序正在等待它时,它没有运行。

于 2012-07-20T19:18:07.023 回答