2016-07-12 3 views
8

Я понимаю, что RyuJIT - это более быстрый компилятор, чем JIT. Но это новый стандарт для .NET 4.6 или это Roslyn?В чем разница между RyuJIT и Roslyn?

Или это, что Roslyn используется, когда вам нужно выставлять API в процессе компиляции?

Я смущен между их целями и рамками, в которых они будут найдены. Может кто-нибудь объяснить разницу &, если вы хотите друг друга, пожалуйста?

+1

Roslyn компилирует текст C#/VB в IL. JIT (и RyuJIT) компилирует IL для машинного кода во время выполнения. –

+2

Проект RyuJIT создал замену джиттера x64, в оригинале, который был отправлен в .NET 2.0, было слишком много ошибок, которые не могли быть исправлены. Никакой корреляции с проектом 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

RyuJIT, Tutorial

Рослин API является то, что вам нужно, если вы хотите играть с синтаксическим деревом, компиляции и семантической модели.

У RyuJIT нет публичного API.

+2

Этот [обзор] (https://github.com/dotnet/coreclr/blob/master/Documentation/botr/ryujit-overview.md) также является отличным ресурсом для RyuJIT. –

2

Вы пытаетесь сравнивать яблоки с апельсинами ...

RyuJIT (x64 JIT по умолчанию для .NET 4.6) компилирует MSIL в машинный код процессора во время выполнения. Roslyn создает MSIL из вашего кода (C#?).