RyuJIT和Roslyn有什么区别?

29

我了解到RyuJIT是比JIT更快的编译器。但它是否成为.NET 4.6的新标准,还是使用Roslyn?

或者说,在编译过程中需要公开API时才会使用Roslyn?

我对它们的用途以及它们所在的框架感到困惑。有人能解释一下它们之间的区别,以及何时需要使用其中一个吗?


2
Roslyn将C#/VB文本编译为IL。JIT(和RyuJIT)在运行时将IL编译为机器码。 - Eli Arbel
3
RyuJIT项目创建了一个替代x64即时编译器,原版.NET 2.0自带的即时编译器有太多无法修复的错误。与同时发布的Roslyn项目没有任何关联,这只是一个巧合。 - Hans Passant
@eliarbel 谢谢。这是否意味着Roslyn可以替代C#编译器csc.exe? - myfunnyfella
1
csc.exe Roslyn 从VS 2015开始启动的。Roslyn也可以作为API使用(Microsoft.CodeAnalysis NuGet包)。 - Eli Arbel
3个回答

41

Roslyn是将你的代码(C#或VB)编译成IL的编译器。

RyuJIT是一个即时编译器,它将你的IL编译成本机代码。

它们两个现在都是开源的。

Roslyn

RyuJIT, Tutorial

Roslyn API是你想要玩转语法树、编译和语义模型所需的。

RyuJIT没有公共API。


2
这个概述也是关于RyuJIT的一个绝佳资源。 - Eli Arbel

22

Roslyn是一个编译器,它可以将您的源代码转换为IL字节码。 RyuJIT在运行时获取该字节码并生成本地代码。您可以将Roslyn嵌入到应用程序中以实现即时编译源代码,但据我所知,RyuJIT严格用于运行时,并且无法访问。


4

你试图拿苹果和橙子进行比较...

RyuJIT(.NET 4.6的默认x64 JIT)在运行时将MSIL编译为本机处理器代码。 Roslyn从你的(C#?)代码创建MSIL。


9
不是的。他特别询问它们是不兼容的苹果和橙子,还是在形式/范围上有何区别。 - Jon Davis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接