RyuJIT 和 Roslyn 有啥区别?

Posted

技术标签:

【中文标题】RyuJIT 和 Roslyn 有啥区别?【英文标题】:What's the difference between RyuJIT and Roslyn?RyuJIT 和 Roslyn 有什么区别? 【发布时间】:2016-07-12 23:51:51 【问题描述】:

我知道 RyuJIT 是一个比 JIT 更快的编译器。但它是 .NET 4.6 的新标准还是 Roslyn?

还是在编译过程中需要暴露API的时候使用Roslyn?

我对它们的用途以及它们将在哪些框架中找到它们感到困惑。有人可以解释一下区别以及什么时候你想要一个而不是另一个?

【问题讨论】:

Roslyn 将 C#/VB 文本编译为 IL。 JIT(和 RyuJIT)在运行时将 IL 编译为机器代码。 RyuJIT 项目创建了 x64 抖动的替代品,.NET 2.0 中的原始抖动有太多无法修复的错误。与 Roslyn 项目完全没有关联,他们同时发货是个意外。 @eliarbel 谢谢。那么这是否意味着 Roslyn 可以替代 csc.exe - Csharp 编译器? csc.exe is Roslyn 从 VS 2015 开始。Roslyn 也可以用作 API(Microsoft.CodeAnalysis NuGet 包)。 【参考方案1】:

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

RyuJIT 是一个Just In Time 编译器,可将您的 IL 编译为本机代码。

它们现在都是开源的。

Roslyn

RyuJIT, Tutorial

如果您想使用语法树、编译和语义模型,您需要 Roslyn API。

RyuJIT 没有公共 API。

【讨论】:

这个overview 也是 RyuJIT 的一个很好的资源。【参考方案2】:

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

【讨论】:

【参考方案3】:

您正在尝试将苹果与橙子进行比较...

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

【讨论】:

不,他不是。他特别问他们是否是不相容的苹果和橙子,或者在形式/范围上有什么区别。

以上是关于RyuJIT 和 Roslyn 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

RyuJIT的华丽转身

在 Roslyn 分析器/源生成器中,有啥方法可以区分直接和传递程序集引用

三维和四维有啥区别?,三维和四维有啥区别?区别大不大啊?

Flutter 中 required 和 @required 有啥区别。它们之间有啥区别,我们啥时候需要使用它们?

java中接口和类有啥区别java中接口和类有啥区别

Java 非堆内存和栈内存有啥区别?它们是不是相同,如果不同,它们之间有啥区别?