Существуют ли атрибуты, влияющие на то, как CLR оптимизируется во время компиляции JIT?

Как говорится в этом вопросе, мне любопытно, знает ли кто-нибудь из вас атрибуты, влияющие на то, как CLR будет компилировать/оптимизировать байт-код. Есть ли атрибут, который повлияет на принятие решений в коде? Развернуть петли?

Существуют ли недокументированные атрибуты для классов, созданных для анонимных типов/делегатов?

Вероятно, атрибуты отключают оптимизацию для целей отладки, но почему-то меня это не интересует.

Ответы

Ответ 1

Только один, который я использовал для отладки:

[MethodImpl(MethodImplOptions.NoInlining)]

Это предотвращает встраивание метода JIT. Там также:

[MethodImpl(MethodImplOptions.NoOptimization)]

Это просто мешает JIT оптимизировать что-либо, если вы обнаружили редкую ошибку в генерации кода, которая фактически вызывает проблему.