2012-07-18 80 views
1

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

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

为何不使用100%的CPU,以及,我怎样才能让这个它呢?

+3

编写效率较低的代码。 – 2012-07-18 08:33:55

+0

@Cylian关心细节为什么你回滚?这个问题目前使这个问题听起来非常具体,我编辑它,使它更通用。 – thecoshman 2012-07-19 07:59:59

+0

您的应用程序是多线程的还是两台机器之间的内核数量有差异? – IvoTops 2012-07-21 22:03:45

回答

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)专用于赛车(游戏)等场合,您将倾向于移除行人和非赛车(其他程序)等事物,以便尽可能快地安全行驶。

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

+0

thanx 4 ur响应。基本上我的问题是,当一个exe在一个系统中使用100%CPU(Windows 7)时,为什么不在其他系统(Windows Server 2008)上使用相同的系统?给定相同的一组输入? – user1534113 2012-07-18 11:51:02

+1

@ user1534113:他实际上在第一条语句中给出了答案,该程序可以由一个平台上的CPU和I/O或另一个平台上的同步来限制。一般来说,I/O限制可以是HDD/RAM速度,总线带宽和内核调用开销之间的任何限制。 – KillianDS 2012-07-18 13:37:30

+0

Thanx很多4编辑答复,标志着我的问题的答案。 – user1534113 2012-08-16 09:54:47

1

CPU的百分比是一个程序使用具有什么,用它做的是如何有效的。

它有一切与CPU做的只是感觉像在做其他事情的一些时间。

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