我有几个C#控制台应用程序,基本上解析内存中的大量数据(LINQ)并将结果输出到文本文件。
现在,忘记写文本文件一分钟,因为这不是问题发生的地方。
当我在调试模式下运行应用程序时,我永远不会使用超过50%的CPU使用率。它将解析/按摩数十万条记录,但只能快速运行X并使用50%的CPU(在任务管理器中查看)。
我真的想使用100%的CPU来加快处理速度。
有人有任何见解吗?
我正在运行带有Service Pack 3的Windows XP Professional。我安装了安装了Service Pack 1的Visual Studio 2008 Professional。
谢谢!
修改
答案 0 :(得分:25)
听起来你有一个双核CPU,你的应用程序是单线程的。
答案 1 :(得分:5)
听起来你有双核cpu。设置处理器关联性对于加速程序没有任何作用。此外,您看到的51/52%是在另一个核心上运行的其他进程,以1-2%加速您的程序在第一个核心上全速运行。
如果您想尝试让程序使用两个内核,请尝试在Parallel Extensions库中查看PLINQ。
答案 2 :(得分:4)
如果您的应用程序仅在一个线程上执行,并且您碰巧有双核处理器,则只会使用其中一个核心,因此您使用50%的可用处理器能力。
如果你有可能将工作分成逻辑部分并产生处理这些部分的线程,你可以使用两个核心。
答案 3 :(得分:3)
您的处理器有两个核心。您的应用程序只有一个线程,只能在一个核心上运行。它利用这个核心100%。如果你也想使用其他核心,你将不得不使用更多的线程。
答案 4 :(得分:1)
正如其他人所说,您的应用程序运行在双核(2)核心CPU的一个核心上。当您在任务管理器中看到50%时,这意味着运行您的应用程序的核心,即CPU的计算能力的一半,正在以100%的速度运行。
编写软件以利用多核CPU本身就是一门艺术。有关讨论,请参阅this article。正如@Alex Moore所说,如果你看到51%或52%,这可能意味着另一个核心正在做1%-2%的事情。