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



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

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

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

这取决于程序需要CPU做什么。如果它必须做大量的工作,那么在一段时间内使用所有一个核心是很常见的。如果它把大部分时间都花在等待输入上,那么它自然会减少使用CPU的频率。我说"少"而不是"少",因为:

在任何给定的时间,单线程程序要么正在运行,要么没有运行,所以它们总是使用一个CPU核心的100%或0%。看起来只使用50%或30%或其他任何东西的程序实际上只是在平衡计算工作的周期和等待输入的周期。与CPU相比,硬盘驱动器等设备的速度非常慢,因此从磁盘读取大量数据的程序将比处理大量数字的程序使用更少的CPU资源。

程序有时甚至长时间使用100%的CPU是正常的,但如果你不需要它(即忙循环),使用它是不礼貌的。这样的行为会挤掉其他可能正在使用CPU的程序。

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

你一开始写的任何小型学术项目都有可能在短时间内使用所有一个核心,然后等待。简单的事情,比如在命令提示符下提示一个数字,是等待的部分,之后在上面做任何学术上的操作都是活跃的部分。

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

没有一种非主观的方法可以回答这个问题。

唯一正确的答案是"它应该只使用完成任务所需的CPU数量,而不是更多。"

换句话说,尽可能多地优化,并且尽可能合理。一般来说,CPU越低越好,执行速度就越快,崩溃的次数就越少,用户也就越不高兴。

通常,算法上繁重的任务(如预测天气)必须由操作系统管理,因为它需要所有的cpu才能运行(直到完成为止)。

另一方面,具有静态用户界面的图形应用程序,如用于存储一点数据以进行记录的windows窗体应用程序,应该需要非常低的cpu使用率,因为它主要是在等待用户做某事。

最新更新