2013-11-25 43 views
0

ClickOnce部署的.Net 4.5 WPF應用程序。測試在Windows 7 & Windows Server 2008 R2上運行。內存/ CPU/IO(寫入本地數據庫)密集型進程需要2臺測試機器需要8分鐘,而其他機器需要1小時(兩臺「快速」機器都是較舊的Windows 7機器)。虛擬/物理,32/64位沒有區別;其中一臺「快速」機器是32位,另一臺是64位(兩者具有相同的處理器規格,但其中一臺「慢」機器也是如此)。 32位機器實際運行速度更快。具有3倍內存和速度更快的處理器以及比「快速」32位機器更多內核的新型64位Windows 7計算機記錄了一些最慢的時間。查找影響.Net應用程序性能的Windows設置

該進程的每一部分(創建大量對象,向本地數據庫發送插入語句等)在「慢」機器上的時間均勻一致。 IOW,這不是IO與CPU。

快速:

  • 32位,4GB RAM,2X4芯特效
  • 64位,4GB RAM,2X4芯特效

慢速:

  • 32位,4GB RAM,2X4核心特效(唯一真正的差異(例如,不同的硬盤製造商之間的這個和上面的快速之一是該機器有兩倍的二級緩存作爲快速的一個)
  • 64位,12GB內存,2X6過程(多機測試這些規格他們測試了接近最慢)
  • 64位,4GB RAM,1X2核心PROC(虛擬)
  • 64位,8GB RAM,2X2核心特效(Server 2008 R2中具有更快的SCSI驅動器)

我們這裏有一臺32位的機器,與「快速」32位機器幾乎完全相同。唯一真正的區別(除了例如不同的硬盤製造商之外)是「慢」機器具有兩倍於「快」的二級緩存。這臺「慢」機器需要一個多小時。因此,似乎肯定它不是硬件問題。

它似乎也不是一些其他運行過程的問題;我看過的東西:

  • Machine.config:從「快」機器複製到「慢」。沒有不同。
  • 硬盤驅動器加密:某些機器已啓用硬盤加密,有些機器不加密。其中一臺「快速」機器缺少加密功能,但是其中一些慢速機器擁有它。
  • 實時病毒防護:大多數機器都在運行(包括「最快」的機器和一些最慢的機器)。
  • 該過程不依賴網絡;整個過程是本地的。
  • 頁面文件設置:「最快」和「最慢」之一之間的重複設置。
  • 處理器負載平衡:查看處理器負載平衡(僅通過查看任務管理器)。沒有明顯的區別。
  • 構建平臺目標:只做一個X64構建思路,使64位機器運行得更快(也許他們在WOW64上運行應用程序?)。沒有不同。使用ManifestModule.GetPEKind驗證構建的exe中的差異。
  • 比較名爲「OnlineAppQuotaUsageEstimate」的ClickOnce相關值的註冊表設置差異。在「慢速」機器上缺乏這個價值,但是當我將它加在「快速」機器上存在的鍵下時,沒有什麼區別。似乎沒有任何關係。
  • 服務包/補丁:這裏的一切都一樣。
  • Ran NP Profiler。 「慢速」和「快速」機器之間的區別:「快速」機器運行的線程運行時間較長,但運行繁重的線程所需時間較少。沒有單一的線索/方法突出作爲罪魁禍首。我注意到的一件事是,文件中的日誌條目在慢速機器上需要可測量的時間,但在快速的機器上沒有可測量的時間。這導致我仔細檢查硬盤和緩存,但除了上面提到的L2差別之外,沒有任何區別(較慢的機器具有兩倍的緩存速度)。
  • 創建了一個小型控制檯應用程序,它執行一些類似的操作(字符串/列表操作,並寫入本地數據庫)。相同的確切比例結果。

所有跡象表明,在2個「快」機器上有一些與「慢」機器不同的Windows配置。尋找有關這種差異的建議;我不認爲有任何一種工具可以指向兩臺不同的機器並顯示不同之處。我無法查看註冊表出口差異;他們會有500K。

+1

服務包和補丁怎麼樣?那是我看的地方。 – Paparazzi

+0

我同意@Blam。另外,也許不同的服務運行?也許可以在程序中添加一些代碼,以便在執行過程中的不同點更新日誌...也許你可以看到是否有特定的代碼區域運行緩慢,也許可以告訴你一些事情......只是隨機的想法。祝你好運! –

+0

@Blam:爲我嘗試過的東西添加了兩顆子彈。應該已經提到過了。 – dudeNumber4

回答

0

在「慢」機器上啓動NGEN服務。這是一個Windows服務。

+0

研究了NGEN,嘗試了這種方法(http://stackoverflow.com/questions/443955/is-it-possible-to-use-ngen-with-clickonce-deployment),什麼都沒有。使用NGEN從命令行手動安裝應用程序,看到它做的事情,什麼都沒有。好的建議,但。順便說一句,這不是一個你只能開始的服務(它只會關閉)。 – dudeNumber4

相關問題