Разница в производительности при использовании Compiler API и Workspace API в Roslyn

Я знаю, что Roslyn предоставляет несколько API; однако я не был уверен, в чем разница в производительности при использовании Compiler API и Workspace API. Создает ли Workspace API все решение и код IL?

1 ответ

API рабочей области можно рассматривать как вспомогательное средство для создания объектов API компилятора. Таким образом, вместо того, чтобы вручную вызывать все различные API-интерфейсы компилятора для анализа синтаксических деревьев и создания компиляций, он делает это за вас. Интересные моменты, которые он действительно делает, это:

  1. Разрешить вам иметь несколько проектов, где мы собираемся создать несколько компиляций для каждого проекта и соединить их вместе. Опять же, ничего, что вы не можете сделать сами, но это становится немного многословным.
  2. Когда у вас есть изменения более высокого уровня в проекте (изменение параметров синтаксического анализа, изменение ссылок), мы постараемся обновить компиляции настолько эффективно, насколько это возможно.
  3. Координирует несколько потоков, запрашивающих данные, пытаясь поделиться всем. т.е. это один большой ленивый API, который все координирует, но также учитывает отмену и тому подобное.
Другие вопросы по тегам