提高长期运营的绩效

时间:2011-07-06 14:30:21

标签: c# cpu-usage performance win32-process

我有一个文件加密程序。当程序加密文件时,CPU使用率不超过25%,因此速度很慢。

如何让操作系统分配更多CPU负载? (例如WinRAR,当它压缩文件时,它从CPU负载达到100%)。


[编辑]:由于我的核心是4,它不使用多个核心。如何使用剩余的核心?

5 个答案:

答案 0 :(得分:2)

除非您以其他方式限制应用程序,否则它将使用操作系统允许的CPU数量 - 默认情况下应该高达100%。我猜想其他一些资源是瓶颈。

您是否将数据流式传输以从远程位置进行加密?从一个由于某种原因很慢的磁盘?

答案 1 :(得分:1)

如果你的工具是单线程程序,那么它只消耗一个核心!如果您的程序只执行for循环或其他类型的循环,那么该核心的性能将达到100%。如果该工具必须执行I / O,那么它永远不会具有最大性能。你看到的25%是每个cpu核心。我记得有些帖子告诉你如何显示每个cpu核心的消费百分比!

答案 2 :(得分:1)

有时人们认为高CPU百分比意味着有效的计划。 如果是这样的话,无限循环将是最有效的循环。

当你有一个程序基本上处理机械硬盘驱动器上的文件时,理想情况下它应该是IO绑定的,因为只需要完成读取文件。 即CPU部分应该足够高效,与从磁盘上移动文件相比,它需要的时间很短。 您可以采取的任何措施来减少CPU时间都会降低CPU百分比,因为I / O占总数的比例较大,反之亦然。 如果你可以在两者之间来回,减少第一个CPU(program tuning),然后是I / O(例如固态驱动器),你可以让它真正飞行。

然后,如果CPU部分仍然需要比你想要的更长的时间,请务必将其分配到多个核心上。

答案 3 :(得分:1)

以防万一,如果您使用的是v4.0,而不是分配更多的CPU负载,请尝试使用Parallel Framework(PFX)optimized for multi core processors

Parallel.Invoke(() => DoCompress());

此外,Threading in C#是Universe中与线程相关的最佳资源。

答案 4 :(得分:-1)

这与处理器和分配资源无关:您使用的工具根本不是设计用于使用cpu的所有(我猜)4核。