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 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
在 Roslyn 分析器/源生成器中,有啥方法可以区分直接和传递程序集引用