最大化CPU使用率

10

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

我正在使用 Windows XP 和 Visual C++ 2005。


1
除了Eclipse的回答:进程/线程优先级不会影响CPU负载,它只会影响可用CPU如何在等待执行的线程之间分配。如果有一个单独的线程处于空闲优先级,它将获得单个核心的所有周期。 - peterchen
4个回答

28

我假设你正在使用双核计算机。尝试启动另一个线程。

如果您的应用程序只有一个执行线程,那么它一次只能在一个CPU核心上运行。解决方法是将工作分成两半,让一个CPU核心运行一半,另一个核心运行另一半。当然,您可能希望将其推广到适用于4个或更多核心的情况....

为您的应用程序设置优先级只会将其移动到获取首次使用CPU机会的进程队列中。如果有实时进程正在等待CPU,则它始终会在高优先级之前获得CPU,以此类推下去。即使您的应用程序优先级较低,如果它有足够的工作要做,并且没有更高优先级的进程想要使用该核心,它仍然可以将一个CPU核心的利用率最大化。

要了解多线程的介绍,请查看以下问题:


谢谢!我感觉自己像个傻瓜 - 继续前进,向OpenMP迈进! - Jacob

9
你可能拥有双核处理器,而你的程序很可能只能单线程运行。

5

进程使用多少CPU与其优先级几乎没有关系。这是因为如果有可用的东西要运行,操作系统会安排其运行,即使它的优先级很低。只有在有两个或更多可运行线程可以选择时,优先级才起作用。(注意:这是极端简化的说法。)

诸如Prime95之类的计算程序以尽可能低的优先级运行,并生成多个线程来利用所有可用的CPU。


0

实时并不一定会占用CPU周期。尝试生成一个或两个线程,或者三个线程,运行紧密循环计数,这是最基本的方法。如果你想(滥用)内存,也可以在循环中分配和释放一些任意对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接