2011-08-05 35 views

回答

3

不,GAC只提供了一種跨應用程序共享程序集的方法(它們不需要自己的本地副本,只需要在一個位置應用更新)。

如果你需要更好的表現,你應該看看NGen(JIT'ing)。

+1

只是確保你測量應用的「速度」有和無NGEN。與JIT編譯的應用程序相比,某些應用程序實際運行速度較慢。 –

4

沒有性能優勢。每當CLR嘗試查找組合文件時,它總是首先查找應用程序目錄。

如果要將組件用於多個應用程序,那麼可以將它們放入GAC中。

編輯: 我需要糾正我的答案。 CLR將首先在GAC中尋找組裝。正確的順序如下所示:

GAC 
AppDir\AssemblyName.dll 
AppDir\AssemblyName\AssemblyName.dll 
AppDir\anyOfPrivatePathsConfigured\AssemblyName.dll 
AppDir\anyOfPrivatePathsConfigured\AssemblyName\AssemblyName.dll 

So maybe there is performance benefit but I doubt it's measurable. And I wouldn't advice putting assemblies in GAC for performance benefit.

5

您可能會遇到改進的加載性能強命名dll時,他們在GAC中。原因是.NET在加載dll時對強命名dll dll進行了哈希驗證。但是,如果dll位於GAC .NET中,則假定在將dll添加到GAC時已經完成了哈希驗證。

你可以得到改進的另一個領域加載性能是如果你的應用程序有幾個appdomains。然後,您可以指示.NET跨應用程序域共享強命名的命名dll,而不是每個AppDomain加載一個,從而節省內存和加載時間。

請參閱此鏈接的詳細信息:http://msdn.microsoft.com/en-us/magazine/cc163655.aspx

相關問題