应用程序不使用100%的CPU

use*_*113 1 theory performance profiling cpu-usage

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

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

为什么它不使用100%的CPU,我怎么能这样做呢?

the*_*man 6

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

以一个GUI应用程序为例,直到用户点击某些东西,它没有什么可做的,然后继续等待用户输入.

你可能会愚蠢地写这个

while(true){
  if(there is user input){
    use the user input
  }
}
Run Code Online (Sandbox Code Playgroud)

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

while(true){
  if(there is user input){
    use the user input
  }
  sleep for 50 ms
}
Run Code Online (Sandbox Code Playgroud)

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

编辑

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

将CPU用作道路和程序视为汽车,如果道路都清晰,那么你的汽车燃烧橡胶并在街道上行驶的速度相对安全.那里的汽车越多,他们就越需要相互屈服,等待人们关闭或开启.

如果您将自己的道路(CPU)用于赛车(游戏)之类的东西,您将倾向于移除行人和非赛车(其他程序)之类的东西,以便您可以更安全地尽可能快地前进.

现在,我从未说过我对隐喻有任何好处.记住驾驶安全,享受冰淇淋!