在调试模式下运行Visual Studio控制台应用程序的CPU使用率不会超过50%

时间:2009-10-13 14:48:50

标签: c# vb.net visual-studio visual-studio-2008 debugging

我有几个C#控制台应用程序,基本上解析内存中的大量数据(LINQ)并将结果输出到文本文件。

现在,忘记写文本文件一分钟,因为这不是问题发生的地方。

当我在调试模式下运行应用程序时,我永远不会使用超过50%的CPU使用率。它将解析/按摩数十万条记录,但只能快速运行X并使用50%的CPU(在任务管理器中查看)。

我真的想使用100%的CPU来加快处理速度。

有人有任何见解吗?

我正在运行带有Service Pack 3的Windows XP Professional。我安装了安装了Service Pack 1的Visual Studio 2008 Professional。

谢谢!

修改

  • 我已手动将任务管理器中进程的关联性设置为双CPU上的单个核心。
  • 有时我可以利用51%或52%的CPU来捕获它。

5 个答案:

答案 0 :(得分:25)

听起来你有一个双核CPU,你的应用程序是单线程的。

答案 1 :(得分:5)

听起来你有双核cpu。设置处理器关联性对于加速程序没有任何作用。此外,您看到的51/52%是在另一个核心上运行的其他进程,以1-2%加速您的程序在第一个核心上全速运行。

如果您想尝试让程序使用两个内核,请尝试在Parallel Extensions库中查看PLINQ。

Parallel Extensions Library

Plinq Article

答案 2 :(得分:4)

如果您的应用程序仅在一个线程上执行,并且您碰巧有双核处理器,则只会使用其中一个核心,因此您使用50%的可用处理器能力。

如果你有可能将工作分成逻辑部分并产生处理这些部分的线程,你可以使用两个核心。

答案 3 :(得分:3)

您的处理器有两个核心。您的应用程序只有一个线程,只能在一个核心上运行。它利用这个核心100%。如果你也想使用其他核心,你将不得不使用更多的线程。

答案 4 :(得分:1)

正如其他人所说,您的应用程序运行在双核(2)核心CPU的一个核心上。当您在任务管理器中看到50%时,这意味着运行您的应用程序的核心,即CPU的计算能力的一半,正在以100%的速度运行。

编写软件以利用多核CPU本身就是一门艺术。有关讨论,请参阅this article。正如@Alex Moore所说,如果你看到51%或52%,这可能意味着另一个核心正在做1%-2%的事情。