代码之家  ›  专栏  ›  技术社区  ›  leppie

AppDomain的创建速度有多快?

  •  1
  • leppie  · 技术社区  · 16 年前

    由于限制,我无法使用DynamicMethod。在一个程序过程中(可能是1000+),我还生成了很多程序集(IronScheme的增量编译器)。

    因此,我想在一个单独的域中处理代码生成,然后卸载它(还没有决定如何处理)。

    2 回复  |  直到 16 年前
        1
  •  2
  •   user38601    16 年前

    我会为你的具体案例做基准测试。

        2
  •  1
  •   Joel Coehoorn    16 年前

    据我所知,它只是比生成线程稍微慢一点。



    http://msdn.microsoft.com/en-us/library/aa159887.aspx

    大约2/3的情况下,它称创建AppDomains是“昂贵的”,但在某些上下文中,您可能会对线程说同样的话——这实际上取决于特定线程在创建时做了什么。

    再次强调:我的理解是,AppDomain本质上是一个进程中的一个线程(或多个线程)——如果您愿意的话,它是一个逻辑分隔符——这样运行时就可以保证某些额外的保护生效,以防止单独的AppDomain相互干扰。要在现有进程(应用程序)中创建新的AppDomain,框架必须完成与创建新线程相关的所有工作,外加一些额外的开销,以便在应用程序的其余部分中进行设置(这可能还涉及将一个或多个程序集加载到内存中)。最后,AppDomain位于线程和进程之间。