3

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

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

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

确实会出现一些问题:

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

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

4

1 回答 1

0

单个较大的 DLL 的启动或执行速度不应比多个较小的 DLL 慢。它可能会更快启动,因为操作系统不必做太多的初始化工作。但是,我怀疑您是否会注意到差异。拥有更少的 DLL 会稍微减少程序的内存占用。同样,不是很多。

我不建议在通过网络提供服务的 DLL 上运行 NGen。NGen 旨在针对运行它的处理器进行编译和优化。如果您的客户端计算机具有不同的体系结构,则 NGen 映像可能不是最佳的,或者它可能无法正常工作。

评论后补充:

有关改善启动时间的更多信息,请参阅改善应用程序启动时间。编写高性能托管应用程序:入门

另请注意,加载程序不会 JIT 整个程序集。它根据需要进行 JIT。如果您的程序不使用程序集中的类,则该类的代码将永远不会被 JITted。此外,一个方法在第一次使用之前不会被 JITted。因此,如果您从不调用该方法Foo.Bar(),那么它将永远不会被 JITted。

于 2011-08-30T15:14:39.773 回答