我需要在我的AppDomains进程内COM服务器中创建多个.NET (它是Windows名称空间扩展)。
在我的测试控制台应用程序中,我可以在40秒内创建10个域+ WPF窗口,这是不可接受的。添加LoaderOptimization.MultiDomainHost可以将速度提高到2-5秒,这是可以的。
但是,COM服务器中没有Main方法,在AppDomainSetup中指定LoaderOptimization只会影响加载2个或更多附加域(即第一个附加AppDomain启动3-4秒,其他在0.1秒-0.3秒)。
因此,我可以为进程内COM服务器指定LoaderOptimization ,如果是,如何指定?。
发布于 2012-05-14 13:42:15
只要用C#编写代码,就无法设置此选项。您需要自己托管CLR,这样才能配置appdomain,这就需要C++代码。核心MSDN库文章设置了从这里开始。
试图弄清楚为什么要花这么长时间,应该会产生一些结果。这听起来不像一个冷启动问题,与第一次在磁盘上查找程序集的成本相关。perf命中只适用于第一个appdomain,之后的应用程序应该是快速的,因为它们会在文件系统缓存中找到程序集。
这就留下了一个温暖的启动问题,与及时编译IL到机器代码有关.解决这个问题的快速方法是在程序集中运行ngen.exe。
https://stackoverflow.com/questions/10583530
复制相似问题