为程序提供所有可能的资源

时间:2011-05-07 21:58:51

标签: windows process

我在C#中创建了一个程序,用于处理Oracle Express(本地实例)中的250万条记录,解析/拆分这些记录并创建额外的500万条记录。

我在屏幕上添加了一些代码来打印时间,看起来相当快。它每9秒对1K记录进行所有处理。这意味着完成需要6个多小时。

现在,使用任务管理器,我可以看到程序正在使用6%的CPU(最大值)和大约50MB的内存。我理解操作系统,而且Oracle本身需要资源来操作但是.....有没有办法告诉这个小程序“嘿,没关系,继续使用至少50%的CPU,有4GB的RAM所以把自己打倒“?

注意:我在Oracle Express上使用本地实例的原因之一是减少网络瓶颈。此外,我可能不会经常运行此过程,但我很想知道这是否可能。

请原谅我的noobness,

谢谢!

2 个答案:

答案 0 :(得分:3)

操作系统将为您的程序提供所需的所有资源,您的进程不消耗所有CPU的原因可能是因为它等待IO子系统而不是处理器。

如果您想查看是否可以消耗更多CPU周期,请尝试尽可能快地编写运行短无限循环的程序,您将看到CPU使用率的差异。

答案 1 :(得分:0)

一些想法,我猜不是真正的答案,但是。

  1. 你可以提高应用程序线程的优先级,但是,代码可能效率低于你的想法,所以......
  2. 您是否在其上运行过探查器?

    1. 如果它当前是一个单线程应用程序,您可以查看是否可以批量解析它并因此并行运行它们。

    2. 在不了解记录分割的大量细节的情况下,是否有可能将更多的东西放到oracle上去做?例如,对网络等或本地或其他方面的影响较小。

    3. 如果你是应用程序绘制/更新屏幕或用户界面,那么它几乎肯定会减慢工作进度。一个例子。我运行了一个应用程序,它将大约10万封电子邮件分成大约250k行进入数据库,如果我将一个项目添加到列表框中,每行都会从短时间变为红色,例如,崩溃无聊。因此,再次,卸载到一个线程以尽可能少的UI更新来完成工作可以提供帮助。