我听说过一个神话,如果将作业保留为活动窗口,而不是在后台或最小化,它会更快地完成。
有没有道理呢?CPU 是否优先处理发生这种情况的任务?
谢谢,
在 Windows 上,前台应用程序获得优先级提升。这是为了帮助它保持对用户的响应,并确保当它在等待一些 I/O 事件后准备好运行时,它将在大多数其他可能等待运行的应用程序之前运行。
前景应用也有可能获得更长的量子时间。
我不知道如果应用程序在前台而不是后台运行,它会完成多快 - 有很多因素会影响到这个(特别是 I/O)。目的是使应用程序更具响应性。
这在某种程度上都是可配置的(可能仅在服务器 SKU 上):
这取决于您的设置。在默认的 Windows桌面操作系统上,这是真的。在 Windows服务器操作系统(如 Windows 2003)上,情况并非如此。
您可以通过进入系统属性并单击性能选项卡来更改设置。确切的布局因 Windows 版本而异,但您应该看到(或能够通过单击高级子选项卡或找到“调度程序”来查看)“工作站”和“服务器”配置之间的单选/组合选项,或选项在优先程序或后台服务之间。在这两种情况下,它们是相同的(只是语言不同——服务器/工作站语言来自 Windows 2000,而程序/服务是为更面向消费者的 XP 创建的)——它们确定调度程序是否对线程的线程给予了额外的重视最顶部的窗口,或者是否平等对待所有线程(基于线程优先级属性)。
这在 Windows 上是部分正确的。Windows 会分配一个 GUI 应用程序,它的窗口在顶部的优先级略高。因此,如果有其他具有正常或较低优先级的任务,该程序实际上可以运行得更快一些,但会以其他程序运行得更慢为代价。
但是有问题。当您在 Visual Studio IDE 中开始编译时,IDE 将为编译生成一个单独的进程,并且仅将其输出重定向到它自己的窗口。由于编译过程现在没有自己的窗口,因此不会获得加速。
Windows 允许您为“前台”任务提供优先级优势,因此这可能不是神话。您也可以将其设置为其他方式,以赋予“服务”任务优先级优势,因此这取决于安装。
请注意,这只会影响优先级......如果没有其他任务正在运行,则在任何一种情况下它的运行都不会明显不同。只有当有另一个应用程序需要 CPU 时间时,您才会注意到差异。