Разница в производительности при использовании Compiler API и Workspace API в Roslyn
Я знаю, что Roslyn предоставляет несколько API; однако я не был уверен, в чем разница в производительности при использовании Compiler API и Workspace API. Создает ли Workspace API все решение и код IL?
1 ответ
API рабочей области можно рассматривать как вспомогательное средство для создания объектов API компилятора. Таким образом, вместо того, чтобы вручную вызывать все различные API-интерфейсы компилятора для анализа синтаксических деревьев и создания компиляций, он делает это за вас. Интересные моменты, которые он действительно делает, это:
- Разрешить вам иметь несколько проектов, где мы собираемся создать несколько компиляций для каждого проекта и соединить их вместе. Опять же, ничего, что вы не можете сделать сами, но это становится немного многословным.
- Когда у вас есть изменения более высокого уровня в проекте (изменение параметров синтаксического анализа, изменение ссылок), мы постараемся обновить компиляции настолько эффективно, насколько это возможно.
- Координирует несколько потоков, запрашивающих данные, пытаясь поделиться всем. т.е. это один большой ленивый API, который все координирует, но также учитывает отмену и тому подобное.