感谢微软专家回答我的问题:
微软专家:What is IL(in .NET)? Are all managed code compiled to IL?
http://www.csdn.net/expert/topic/372/372373.shtm
我还想问一下,是不是说所有的managed code编译后都不是本地的机器码,即使我在managed code中写了一句total++,它也会被编译成中间语言代码?
...全文
623打赏收藏
再问微软专家,关于IL的问题
感谢微软专家回答我的问题: 微软专家:What is IL(in .NET)? Are all managed code compiled to IL? http://www.csdn.net/expert/topic/372/372373.shtm 我还想问一下,是不是说所有的managed code编译后都不是本地的机器码,即使我在managed code中写了一句total++,它也会被编译成中间语言代码?
目前的情况是:.NET中的managed codes都是先编译成IL中间码,运行的时候有JIT compiler编译成native x86 指令执行的。微软承诺在将来会发布直接将代码编译成native x86 指令来执行(或类似的转换工具),这样就跟你用vc++等工具写的代码差不多了,减少了代码load的时间;当然同时也失去了一个进行性能优化的机会----如果代码在运行前进行动态编译运行,那么JIT compiler可以很智能的根据你本地机器的硬件条件来进行优化,比如使用更好的register,机器指令等等,而不是像现在这样,build一份程序针对所有硬件的机器跑,没有充分利用各个机器的不同条件。