.net程序集的大小是否会影响性能?Windows窗体/ Web表单项目中的程序集数量如何?
来自Microsoft的模式和实践提高.NET应用程序性能和可伸缩性第5章:
更喜欢单个大型装配而不是多个较小的装配
为了帮助减少应用程序的工作集,您应该更喜欢单个较大的程序集而不是多个较小的程序集.如果您有多个总是一起加载的程序集,则应将它们组合在一起并创建一个程序集.
与多个较小的程序集相关的开销可归结为以下几点:
加载较小程序集的元数据的成本.
触摸CLR中预编译图像中的各种内存页面以加载程序集(如果它是使用Ngen.exe预编译的).
JIT编译时间.
安全检查.
因为您只为程序访问的内存页付费,所以较大的程序集为Native Image Generator实用程序(Ngen.exe)提供了更大的机会来优化它生成的本机映像.更好的图像布局意味着可以更加密集地布置必要的数据,这反过来意味着与多个组件中布置的相同代码相比,完成工作所需的整体页面更少.
有时你无法避免分裂组件; 例如,出于版本控制和部署原因.如果需要单独运输类型,则可能需要单独的组件.
好吧,每次加载一个程序集时,由于分辨率损失会有一些命中 - 找到正确的文件,可能会验证版本号等.这可能主要是在启动时.
但是,我认为它不会显着影响"稳态"性能.
紧凑的框架DLL将始终加载到64 kb的最小内存空间,无论它有多小.因此,加载四个独立的10 kb CF DLL将在设备上花费256 kb.如果你将它们组合在一起(ILMerge),它只会花费你64kb的内存.