代码之家  ›  专栏  ›  技术社区  ›  Jacob

最大化CPU使用率

  •  10
  • Jacob  · 技术社区  · 16 年前

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

    我用Visual C++ 2005在WindowsXP中工作。

    4 回复  |  直到 14 年前
        1
  •  27
  •   Community Mohan Dere    8 年前

    我假设你在双核电脑上运行。尝试启动另一个线程。

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

    为您的应用程序设置优先级只会将它移到队列中,而对于这个队列,进程第一次有机会使用CPU。如果有一个实时进程在等待CPU,它将总是在高优先级之前得到它,等等,在优先级列表下面。即使你的应用是低优先级的,如果它有足够的工作要做,它仍然可以最大化一个CPU核心,并且没有更高优先级的进程想要使用这个核心。

    有关多线程的介绍,请查看以下问题:

        2
  •  9
  •   JohnC    16 年前

    您可能有一个双核处理器,并且您的程序可能是单线程的。

        3
  •  5
  •   Greg Hewgill    16 年前

    优先级与您的进程使用多少CPU几乎无关。这是因为如果有什么 可获得的 要运行,操作系统会安排它运行,即使它是低优先级的。只有当有两个或多个可运行线程可供选择时,优先级才会进入。(注:这是一个极端简化。)

    数字处理程序,如 Prime95 跑在 最低的 可能的优先级,并产生多个线程来使用尽可能多的CPU。

        4
  •  0
  •   Paul Sasik    16 年前

    实时不一定会占用CPU周期。尝试生成一个或两个线程,或三个运行紧密循环的线程,这些循环最基本。如果您想(ab)使用内存,还可以在循环中分配和取消分配一些任意对象。