应用程序不使用100%的CPU

时间:2012-07-18 08:32:48

标签: performance profiling theory cpu-usage

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

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

为什么它不能同时使用100%的CPU,我该如何才能使用它呢?

2 个答案:

答案 0 :(得分: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)用于赛车(游戏)之类的东西,您可能会倾向于移除行人和非赛车(其他程序)之类的东西,以便您可以更安全地尽快前进。 / p>

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

答案 1 :(得分:1)

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

它有所有与CPU有关,只是觉得在某些时候做其他事情。

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