2016-07-12 62 views
8

我知道RyuJIT比JIT更快。但它是.NET 4.6的新標準還是Roslyn?RyuJIT和Roslyn有什麼區別?

還是在編譯過程中需要暴露API時使用Roslyn?

我很困惑他們的目的和他們會在什麼框架中找到。有人可以解釋&當你想要一個在另一個,請嗎?

+1

Roslyn將C#/ VB文本編譯爲IL。 JIT(和RyuJIT)在運行時將IL編譯爲機器碼。 –

+2

RyuJIT項目爲x64抖動創建了一個替代品,最初的那個在.NET 2.0中發佈的bug有太多的bug,無法修復。與Roslyn項目沒有任何關聯,他們同時發貨是一個意外。 –

+0

@eliarbel謝謝。那麼這是否意味着Roslyn可以代替csc.exe - Csharp編譯器? – myfunnyfella

回答

10

Roslyn是一個編譯器,它會獲取您的源代碼並生成IL字節碼。 RyuJIT在運行時獲取所述字節碼,並生成本機代碼。您可以將Roslyn嵌入到應用程序中以便即時編譯源代碼,但RyuJIT嚴格限於運行時,並且據我所知不能被訪問。

9

Roslyn是將您的代碼(C#或VB)編譯爲IL的編譯器。

RyuJIT是一個Just In Time編譯器,它將IL編譯爲本地代碼。

他們倆現在都是開源的。

Roslyn

RyuJITTutorial

羅斯林API是你所需要的,如果你想用語法樹,編譯和語義模型玩。

RyuJIT沒有公共API。

+2

此[概述](https://github.com/dotnet/coreclr/blob/master/Documentation/botr/ryujit-overview.md)也是RyuJIT的優秀資源。 –

2

您試圖比較蘋果和橘子......

RyuJIT(默認64 JIT的.NET 4.6)運行時編譯MSIL到本地處理器的代碼。 Roslyn從你的(C#)代碼創建MSIL。