【问题标题】:Is there a performance penalty for loading classes from other assemblies?从其他程序集中加载类是否会降低性能?
【发布时间】:2011-05-23 03:45:19
【问题描述】:

这里是场景。我已经构建了一个用于执行存储过程的数据包装类。我想在其他项目中使用这个类。众所周知,通常要求数据层代码应尽快执行以避免瓶颈。

所以我的问题是,如果我要在自己的程序集中构建我的数据类,这样更容易分发到其他解决方案,这是否会对类本身造成任何类型的加载时间损失?另一种选择是将类文件复制并粘贴到每个项目中。

【问题讨论】:

    标签: .net asp.net performance assemblies


    【解决方案1】:

    您应该注意,虽然与加载程序集相关的成本不为零(尽管可能微不足道),但在几乎所有情况下,每个 AppDomain 仅发生一次,因此瓶颈不是问题。

    【讨论】:

      【解决方案2】:

      您知道,整个框架也属于other 程序集类别。

      我认为这里涉及的时间尺度并不重要,并且会影响您的流程。

      【讨论】:

      • 是的,我确实意识到了这一点,但我只是好奇人们会发表什么样的意见:)
      【解决方案3】:

      当您需要来自另一个程序集的某些类型时,JIT 会加载类型。 它首先加载程序集本身,然后加载包含的所有类型。

      之后类型在内存中,构造它们就不会受到惩罚。

      对于每个 AppDomain,所有这些都是正确的。但您可能只使用了一个。

      因此,您所指的性能问题只能在宠物组件加载后发生。

      如果您担心这可能会在不应该触发时触发,您可以选择提前预加载您需要的所有程序集 (link to one question of mine)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多