2013-07-30 78 views
0

我正在開發一款需要以高性能運行的軟件,我想知道它是否應該作爲Windows服務或常規Windows應用程序運行。問題是:在性能方面兩者是否有區別?意思是:操作系統調度程序是否會給Windows服務提供比Windows應用程序更多的CPU ticks?Windows服務性能與Windows應用程序性能

回答

2

要回答這個問題,看Description of Performance Options in Windows

您可以使用性能選項將Windows設置可以針對任何前臺程序或後臺服務優化。假設背景服務的數量相對較少,並且在CPU時間更多的情況下效率更高,並且臺式計算機上的程序服務器或交互式程序在更短的時間片內效率更高,從而可以更快地響應鍵盤輸入和以服務更多的線程(成千上萬的終端服務應用程序服務器模式。

...

成爲當您啓用前臺應用程序選項更爲複雜的局面。這將引入「變量量子」的概念。在這個情況下,後臺任務的接收量與前臺任務接收到的量程不同,而且這兩個量程比線程在後臺服務設置的計算機上收到的時間要短。 y,後臺進程接收3的量程,前臺進程接收9的量程。因此,可以計算線程在定時器到期之前將運行的時間長度。

閱讀整個鏈接瞭解更多詳情。 TL/DR:後臺服務接收更長的量子。

但是,我非常懷疑你需要擔心這個設置。首先,最重要的是,99.9999%的應用程序始終不做任何事情,但等待一些IO完成(磁盤,網絡)。除非您在緊密循環中執行算術運算,否則由於所有實際原因,您的代碼始終在等待永不運行。助推器不會幫助你。而且我非常懷疑你真的需要部署一個服務,它可以在緊密的環路中執行高CPU。

對於你來說更相關的主題是通過High Performance Windows Programs學習如何在Windows上編寫適當的性能程序(即使用IO隊列完成狀態和朋友)。

而且,如果您需要CPU提升,則只需禁用CPU power savings in BIOS即可。

+0

優秀的答案。爲了增加這一點(儘管我現在找不到參考文獻......),無論用戶設置如何,服務器和非服務器版本的Windows之間都存在類似的可變量子事物。此外,當然,由於優先級提高對正在發送的事件的影響。 – Damon

+0

@Damon:或許[Windows Vista內核:第1部分](http://technet.microsoft.com/en-us/magazine/2007.02.vistakernel.aspx):'默認情況下,在客戶端版本的Windows線程上允許運行多達2個時鐘滴答(如果在前臺爲6個)'(而不是服務器的3和9)。 –

+0

確實,就是這樣! :) – Damon