【发布时间】:2015-12-23 12:03:06
【问题描述】:
我今天参加了一个程序员会议:
一个人说:
一个好的程序使用最大的处理器
并根据一般计算:
当任务管理器显示100% 利用率时。这意味着你的电脑需要一些药物。
一个程序在使用最大处理器时会将任务管理器推到 100%。
这两件事听起来很矛盾。有人可以说明理由吗?
【问题讨论】:
标签: performance language-agnostic coding-style cpu-usage
我今天参加了一个程序员会议:
一个人说:
一个好的程序使用最大的处理器
并根据一般计算:
当任务管理器显示100% 利用率时。这意味着你的电脑需要一些药物。
一个程序在使用最大处理器时会将任务管理器推到 100%。
这两件事听起来很矛盾。有人可以说明理由吗?
【问题讨论】:
标签: performance language-agnostic coding-style cpu-usage
这表明愚蠢的想法是如何在程序员社区中流传的。
所有 CPU 利用率都可以非常粗略地告诉您,程序花费在计算与等待(可能用于 I/O,可能用于无关处理)上的时间比例。此外,如果您有一台 4 核机器,则 25% 可能意味着 100% 的一个核心。
某些程序应该受 I/O 限制,因为它们的主要工作是读/写文件或其他 I/O。它们的 CPU 利用率应该很低。 其他的应该是 CPU-bound。 但这并不能告诉您其中任何一个是否“有效”。
当一个程序什么都不做不必要时它是有效的。 您可以轻松地让程序看起来受 CPU 限制或 I/O 限制,只需让程序执行两次即可! 如果您看到较高的 CPU 百分比或较高的 I/O 利用率,那么当您认为计算机应该处于空闲状态时,这意味着某些东西正在运行,您应该怀疑它不是您想要的东西。
我只知道一种提高程序效率的方法,那就是诊断它们在做什么,并消除任何需要时间并且可以删除的东西。 Example.
【讨论】: