2009-10-27 104 views
10

如何最大限度地提高我的应用程序的CPU使用率?我试图在任务管理器中将其设置为“实时”,但没有明显的改善 - 它停留在50%。最大限度地利用CPU使用率

我在Windows XP的工作用Visual C++ 2005

+1

除了Eclipse的回复:进程/线程优先级不影响CPU负载,它只影响可用CPU在线程之间如何分配等待执行的线程。如果有空闲优先级的单线程,ti将获得单个内核的所有周期。 – peterchen 2009-10-27 21:50:56

回答

27

我假设你在双核计算机上运行。尝试开始另一个线程。

如果您的应用程序中只有一个执行线程,则它一次只能在一个CPU内核上运行。解决这个问题的办法是把工作分成两半,让一个CPU核心运行一半,另一个核心运行另一半。当然,您可能希望将其推广至4核或更多内核。

为您的应用程序设置优先级只会将其移动到队列中,以便首先有机会使用CPU。如果有一个等待CPU的实时进程,它将始终在高优先级之前获得它,依此类推优先级列表。即使您的应用程序的优先级较低,但如果它有足够的工作量,它仍然可以使CPU核心达到最大程度,并且没有更高优先级的进程希望使用该核心。

的介绍,多线程,看看这些问题:

+0

谢谢!男人,我觉得自己像一个愚蠢的人 - 向OpenMP的前进! – Jacob 2009-10-27 21:57:07

9

你可能有一个双核处理器和程序可能是单螺纹。

0

实时并不一定会吃掉CPU周期。尝试产生一个或两个或三个运行紧密循环的计数,最基本的。如果你想(ab)使用内存,你也可以在你的循环中分配和释放一些任意的对象。

5

优先级与您的进程使用多少CPU没有多少关系。这是因为如果有可用运行,操作系统将安排它运行,即使它是低优先级。只有有两个或更多可运行线程可供选择时才会有优先权。 (注:这是一个极端的简化。)

数字运算程序,如Prime95运行在最低可能的优先和产卵多线程,你必须使用所有尽可能多的CPU。