单个线程应用程序应该使用多少cpu?

时间:2012-07-25 21:41:09

标签: c# cpu-usage

我有一个线程控制台应用程序。

我对CPU使用率的概念感到困惑。一个好的单线程应用程序应该使用~100%的cpu使用率(因为它可用),或者它不应该使用大量的cpu使用(因为它可能导致计算机速度变慢)?

我做了一些研究,但没有找到我的困惑的答案。我是一名学生,仍在学习,所以任何反馈都将不胜感激。感谢。

3 个答案:

答案 0 :(得分:4)

这取决于程序需要CPU的用途。如果它必须做很多工作,那么在一段时间内使用所有一个核心是很常见的。如果它花费大部分时间等待输入,那么它自然会更少地使用CPU。我说“不那么频繁”而不是“少”因为:

单线程程序在任何给定时间都在运行,或者它们不运行,因此它们总是使用100%或0%的CPU核心。似乎只使用50%或30%或其他任何东西的程序实际上只是平衡计算工作的时间段和等待输入的时间段。与CPU相比,像硬盘这样的设备非常慢,因此从磁盘读取大量数据的程序将比使用大量数字的程序使用更少的CPU资源。

程序有时使用100%的CPU是正常的,通常甚至很长一段时间,但如果你不需要它(即busylooping),使用它是不礼貌的。这种行为挤占了可能正在使用CPU的其他程序。

硬盘驱动器也是如此。人们忘记了硬盘驱动器也是一种有限的资源,主要是因为任务管理器没有按百分比使用硬盘驱动器。由于磁盘访问没有固定的速度,因此难以将硬盘使用率作为总量的百分比来衡量,这与处理器不同。但是,在磁盘上移动1GB数据所花费的时间要比使用CPU在内存中移动1GB数据要花费更长的时间,并且硬盘占用的性能影响与CPU占用相比更糟或更差(它们往往会变慢)你的系统在没有任何CPU使用情况的情况下进行爬行。你以前可能已经看过它了)

您最初编写的任何小型学术课程都可能会在短时间内使用所有一个核心,然后等待。在命令提示符处提示输入数字等简单的东西是等待的部分,之后做任何学术界的操作都是活动部分。

答案 1 :(得分:3)

这取决于它在做什么。不同类型的操作有不同的需求。

没有非主观的方式来回答这个跨越董事会的问题。

唯一的答案是“它应该只使用完成工作所需的CPU数量,而不是更多。”

换句话说,尽可能地优化并且合理。一般来说,CPU越低越好,执行速度越快,崩溃越少,对用户的骚扰就越小。

答案 2 :(得分:0)

通常情况下,预测天气等算法繁重的任务必须由操作系统管理,因为它需要所有的cpu,因为它将被允许运行的时间(直到它完成)。

另一方面,具有静态用户界面的图形应用程序,如用于存储一些数据以保存记录的Windows窗体应用程序,需要非常低的CPU使用率,因为它主要等待用户做某事。