繁体   English   中英

将所有可能的资源分配给程序

[英]Give all possible resources to a program

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

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

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

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

请原谅我的愚昧

谢谢!

操作系统将为您的程序提供所需的所有资源,原因是您的进程没有消耗所有CPU,这可能是因为它比处理器更需要IO子系统。

如果要查看是否可以消耗更多的CPU周期,请尝试编写一个运行尽可能短的无限循环的程序,您会发现CPU使用率的差异。

我有很多想法,但并不是真正的答案。

  1. 您可以提高应用程序线程的优先级,但是,代码的效率可能比您想象的要低,所以。

您在上面运行了探查器吗?

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

  2. 在不了解记录拆分的很多细节的情况下,是否有可能将更多的工作交给Oracle执行? 例如,对网络等或本地或其他方面的影响较小。

  3. 如果您正在绘制/更新屏幕或UI的应用程序,那么几乎可以肯定会减慢工作进度。 一个例子。 我运行了一个应用程序,该程序将大约1万封电子邮件分类成大约25万行到数据库中,如果我在每行中将一个项目添加到列表框中,则时间从短到冗长,例如,崩溃很无聊。 因此,再次强调,卸载线程以完成尽可能少的UI更新可以完成工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM