如何减少在网络上运行的.Net dll的数量

时间:2011-08-30 14:11:49

标签: .net networking dll ngen

我们有一个带有大量.dll文件的.Net framework 4软件解决方案。

这些文件托管在网络服务器上,并从公共远程文件夹上的客户端运行。

我们希望减少此服务器文件夹中的.dll文件数。

确实出现了一些问题:

  • 较大的合并.dll是否会比许多较小的.dll更慢/更快地启动/执行?
  • 对网络库文件使用NGen有什么好处,以便为每个客户端优化它?

其中大多数.dll实际上是通过COM可见接口从32位非托管代码调用的。

1 个答案:

答案 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。