在this answer中有一个相当有趣的说法:在GAC中有额外的未使用的.NET程序集会降低性能。
具体是关于以下情况:机器GAC中有程序集X.Y.Z
,并且该机器上没有程序使用此程序集,并且声称在GAC中使用此程序集可能会降低性能。
这是真的吗?有关这方面的详细数据吗?
答案 0 :(得分:3)
它影响冷启动,始终是托管代码中最受关注的性能特征,因为它是迄今为止最慢和最明显的。托管代码只需要查找大量的DLL,包括程序集和ngen-ed DLL。这在硬盘驱动器上很慢,当文件系统缓存中没有任何内容时,需要一段时间来挖掘文件。较大的目录需要更长的时间来搜索。
托管代码不是一个独家问题,使用大量DLL的本机程序也存在这个问题。这就是为什么像Office应用程序或Acrobat Reader这样的大型程序使用“优化器”的原因,这是一个在登录时启动的小程序,它只会触及主程序所需的DLL集。预热文件系统缓存。实际上,当您第一次登录时, 想要启动的程序会慢下来。我总是删除它们但是它们习惯被放回去,特别是Adobe那样糟透了。 Windows Superfetch是一种出色的解决方案,它根据实际使用情况动态调整可执行文件集以进行预缓存。
实际上从GAC中删除程序集当然不是一个现实的解决方案。无论如何,效果很小。