动态编译C#代码时,首次执行代码很慢,如何解决?

ptlinyi 2016-07-25 02:36:27
动态编译代码如下:

CompilerParameters parameters = new CompilerParameters();
parameters.GenerateInMemory = true;
CodeDomProvider _provider = new Microsoft.CSharp.CSharpCodeProvider();
CompilerResults results = _provider.CompileAssemblyFromSource(parameters, codeString);
Assembly assembly = results.CompiledAssembly;

执行代码如下:

object obj = assembly.InvokeMember(funcName, BindingFlags.InvokeMethod,
null, null, new object[] { true });


但以上在执行代码时,如果是首次执行到的,都非常慢,第二次再执行,就非常快了。
这个原因应该是.NET的即时编译(JIT)机制引起的,也就是首次执行会即时编译。
我现在想解决的是,直接让首次执行达到第二次执行的性能,即便编译时多等待时间也可以。
请问该如何解决,谢谢!
...全文
684 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jaye-L 2016-07-25
  • 打赏
  • 举报
回复
.net native 但貌似现在还仅支持uwp
快乐起航2020 2016-07-25
  • 打赏
  • 举报
回复
路过