我们有一个带有大量.dll文件的.Net framework 4软件解决方案。
这些文件托管在网络服务器上,并从公共远程文件夹上的客户端运行。
我们希望减少此服务器文件夹中的.dll文件数。
确实出现了一些问题:
其中大多数.dll实际上是通过COM可见接口从32位非托管代码调用的。
答案 0 :(得分:0)
单个较大的DLL启动或执行速度不应低于多个较小的DLL。它可能更快启动,因为操作系统不必进行那么多的初始化工作。但是,我怀疑你是否注意到了这种差异。拥有较少的DLL将减少程序的内存占用量。再一次,不是很多。
我不建议在通过网络提供服务的DLL上运行NGen。 NGen旨在为其运行的处理器进行编译和优化。如果您的客户端计算机具有不同的体系结构,则NGen映像可能不是最佳的,或者可能无法正常工作。
评论后的补充:
有关改善启动时间的详细信息,请参阅Improving Application Startup Time。还Writing High-Performance Managed Applications : A Primer。
另请注意,加载程序不会JIT整个程序集。它根据需要进行JIT。如果你的程序没有使用程序集中的类,那么该类的代码将永远不会被JIT。此外,在首次使用之前,方法不会被JIT。因此,如果您从未调用方法Foo.Bar()
,那么它将永远不会被JIT。