程序应充分利用处理器,但 CPU 的充分利用并不好
Program shall utilize full processor but full utilization of CPU is not good
我今天参加了一个程序员会议:
一个人说:
A good program utilizes maximum processor
并根据一般计算:
When task manager shows 100% utilization. It means your PC need some medications.
使用最大处理器时的程序会将任务管理器推送到 100%。
这两件事听起来很矛盾。有人可以解释一下吗?
这表明愚蠢的想法是如何在程序员社区中传播的。
所有 CPU 利用率告诉你的是,非常粗略地,程序花在计算和等待上的时间比例,可能是 I/O,可能是不相关的处理。另外,如果你有一台 4 核机器,25% 可能意味着一个核心的 100%。
一些程序应该 I/O 绑定,因为它们的主要工作是 read/write 文件或其他 I/O。他们的 CPU 利用率应该很低。
其他的应该是 CPU-bound。
但这并没有告诉你是否有一个是 "efficient".
一个程序什么都不做时是高效的不必要的。
你可以很容易地让一个程序看起来像 CPU-bound 或 I/O-bound,只需让它做所有事情两次!
如果您看到高 CPU 百分比或高 I/O 利用率,而就您而言,计算机应该处于空闲状态,这意味着某些东西是 运行,您应该怀疑这不是你想要的。
我只知道一种提高程序效率的方法,那就是诊断它们在做什么,并消除任何需要时间且可以删除的东西。
Example.
我今天参加了一个程序员会议:
一个人说:
A good program utilizes maximum processor
并根据一般计算:
When task manager shows 100% utilization. It means your PC need some medications.
使用最大处理器时的程序会将任务管理器推送到 100%。
这两件事听起来很矛盾。有人可以解释一下吗?
这表明愚蠢的想法是如何在程序员社区中传播的。
所有 CPU 利用率告诉你的是,非常粗略地,程序花在计算和等待上的时间比例,可能是 I/O,可能是不相关的处理。另外,如果你有一台 4 核机器,25% 可能意味着一个核心的 100%。
一些程序应该 I/O 绑定,因为它们的主要工作是 read/write 文件或其他 I/O。他们的 CPU 利用率应该很低。 其他的应该是 CPU-bound。 但这并没有告诉你是否有一个是 "efficient".
一个程序什么都不做时是高效的不必要的。 你可以很容易地让一个程序看起来像 CPU-bound 或 I/O-bound,只需让它做所有事情两次! 如果您看到高 CPU 百分比或高 I/O 利用率,而就您而言,计算机应该处于空闲状态,这意味着某些东西是 运行,您应该怀疑这不是你想要的。
我只知道一种提高程序效率的方法,那就是诊断它们在做什么,并消除任何需要时间且可以删除的东西。 Example.