在this answer有一個相當有趣的說法:在GAC中有額外的未使用的.NET程序集會降低性能。GAC中有未使用的程序集會影響性能嗎?
具體是關於下列情況:機器GAC中有組件X.Y.Z
,並且該機器上沒有程序使用該組件,並且聲稱在GAC中使用此組件會降低性能。
這是真的嗎?有沒有這方面的詳細資料?
在this answer有一個相當有趣的說法:在GAC中有額外的未使用的.NET程序集會降低性能。GAC中有未使用的程序集會影響性能嗎?
具體是關於下列情況:機器GAC中有組件X.Y.Z
,並且該機器上沒有程序使用該組件,並且聲稱在GAC中使用此組件會降低性能。
這是真的嗎?有沒有這方面的詳細資料?
它影響冷啓動,總是在託管代碼中獲得最多關注的性能特徵,因爲它是迄今爲止最慢和最引人注目的。託管代碼只有很多DLL才能找到,包括彙編和ngen-ed DLL。這在硬盤上很慢,當文件系統緩存中沒有任何內容時,需要一段時間來挖掘文件。更大的目錄需要更長時間才能搜索。
這不是託管代碼的專有問題,使用大量DLL的本機程序也有這個問題。這就是爲什麼像Office應用程序或Acrobat Reader這樣的大型程序使用「優化程序」,這是一個在登錄時開始的小程序,除了觸及主程序需要的一組DLL之外什麼都不做。預熱文件系統緩存。並且實際上減慢你想要在第一次登錄時啓動的任何程序真的。我總是刪除它們,但它們有一個習慣讓它恢復原狀,特別是Adobe很糟糕。 Windows Superfetch是最好的解決方案,它根據實際使用情況動態調整可預先執行的一組可執行文件。
實際上從GAC中刪除組件當然不是一個現實的解決方案。無論如何,效果都很小。
答案並不是說未使用的程序集會降低性能。你是怎麼得出這個結論的? –
@Cicada:它特別說明*一個加載組件,一個小小的性能提高你*。我還能怎麼解釋? – sharptooth
這是特定於Windows Azure,因爲我猜它會加載GAC中的所有程序集?對於只有您所依賴的程序集由運行時加載的桌面GAC而言並非如此。 –