2012-05-24 64 views
0

this answer有一个相当有趣的说法:在GAC中有额外的未使用的.NET程序集会降低性能。GAC中有未使用的程序集会影响性能吗?

具体是关于下列情况:机器GAC中有组件X.Y.Z,并且该机器上没有程序使用该组件,并且声称在GAC中使用此组件会降低性能。

这是真的吗?有没有这方面的详细资料?

+1

答案并不是说未使用的程序集会降低性能。你是怎么得出这个结论的? –

+0

@Cicada:它特别说明*一个加载组件,一个小小的性能提高你*。我还能怎么解释? – sharptooth

+0

这是特定于Windows Azure,因为我猜它会加载GAC中的所有程序集?对于只有您所依赖的程序集由运行时加载的桌面GAC而言并非如此。 –

回答

3

它影响冷启动,总是在托管代码中获得最多关注的性能特征,因为它是迄今为止最慢和最引人注目的。托管代码只有很多DLL才能找到,包括汇编和ngen-ed DLL。这在硬盘上很慢,当文件系统缓存中没有任何内容时,需要一段时间来挖掘文件。更大的目录需要更长时间才能搜索。

这不是托管代码的专有问题,使用大量DLL的本机程序也有这个问题。这就是为什么像Office应用程序或Acrobat Reader这样的大型程序使用“优化程序”,这是一个在登录时开始的小程序,除了触及主程序需要的一组DLL之外什么都不做。预热文件系统缓存。并且实际上减慢你想要在第一次登录时启动的任何程序真的。我总是删除它们,但它们有一个习惯让它恢复原状,特别是Adobe很糟糕。 Windows Superfetch是最好的解决方案,它根据实际使用情况动态调整可预先执行的一组可执行文件。

实际上从GAC中删除组件当然不是一个现实的解决方案。无论如何,效果都很小。

相关问题