我正在开发一款需要高性能运行的软件,我想知道它是否应该作为 Windows 服务或常规 Windows 应用程序运行。问题是:两者在性能方面有什么区别吗?意思是:操作系统调度程序会给 Windows 服务比 Windows 应用程序更多的 CPU 滴答声吗?
1 回答
要回答这个问题,请参阅Windows 中的性能选项说明:
您可以使用性能选项将 Windows 设置为针对前台程序或后台服务进行优化。假设后台服务的数量相对较少,CPU 时间越长效率越高,桌面计算机上的程序服务器或交互式程序效率越高,时间片越短,对键盘输入和为更多线程提供服务(应用程序服务器模式下的终端服务有数千个。
...
当您启用“前台应用程序”选项时,情况会变得更加复杂。这就引入了“可变量子”的概念。在这种情况下,后台任务接收的量程与前台任务接收的量程不同。此外,这两组量子都比线程在用于后台服务的计算机集上接收到的要短。目前,后台进程接收到的时间片为 3,前台进程接收到的时间片为 9。因此,您可以计算线程在其计时器到期之前将运行的时间长度。
阅读整个链接以获取更多详细信息。TL/DR:后台服务接收更长的 quanta。
但是,我非常怀疑您是否需要担心此设置。首先,99.9999% 的应用程序一直什么都不做,只是等待一些 IO 完成(磁盘、网络)。除非您在紧密循环中执行算术,否则出于所有实际原因,您的代码永远不会运行并始终等待。提升对您没有任何帮助。而且我非常怀疑您是否真的需要部署一个在紧密循环中执行高 CPU 的服务。
与您更相关的主题是学习高性能 Windows 程序以了解如何在 Windows 上编写适当的性能程序(即使用 IO 队列完成状态和朋友)。
而且,如果您需要 CPU 提升,只需在 BIOS 中禁用 CPU 节能。