C#应用程序 - 降低CPU使用率

c0D*_*g1c 6 c# performance for-loop cpu-usage

我有一个多线程C#应用程序,其中核心逻辑位于Timer.Elapsed事件处理程序中.事件处理程序包含2个for循环,最多执行n * n = 5 * 5 = 25 times.

该应用程序在我的PC上运行良好.我VS 2010 Profiler针对应用程序运行,CPU使用率平均为20%.

该公司的测试人员说,在他的电脑上,他的电脑上的这个数字会上升到50%100%之间.这导致了他的性能问题.

  • 有什么办法可以解决这个问题吗?
  • 高CPU使用率究竟意味着什么?
  • 这会影响他的电脑吗?
  • 是否可以告诉应用程序仅使用XCPU的数量?

任何帮助,将不胜感激.

Mar*_*ell 6

  • 不经常运行计时器事件
  • 在工作线程上完成工作(因此UI至少响应)
  • 在计时器中做更少的工作(或更有效地做)
  • 获得更多的CPU

我猜你真的是指第三个子弹,但我们无法在不知道代码在做什么的情况下回答这个问题.但是(没有任何背景的随机建议):

  • 查看任何集合访问,以查看是否存在字典,散列集或类似的位置
  • 检查你是否正在做大量的IO(尤其是数据库),可以减少
  • 检查你是否要通过大量的线程切换Invoke(或UI等效)


Mik*_*vey 3

你正处于疑惑和猜测模式。忘记 CPU 百分比。专业人士所做的就是找出该程序为什么要花费时间以及是否有必要。

您可以做的就是在一个长循环中运行该代码,然后对其进行采样。 我用这个方法。 堆栈样本将优先落在调用树的重分支中。你很有可能砍掉一些沉重的分支并获得不错的加速。