.NET CLR JIT будет; в моем понимании; попытаться оптимизировать код с помощью таких шаблонов, как метод Inlining , Loop Unrolling и т. д. ... В случае метода Inlining это не будет выполнено по следующим причинам:
- Методы, длина которых превышает 32 байта, не будут встроены.
- Виртуальные функции не встроены.
- Методы, которые имеют сложное управление потоком, не будут встроены. Комплексное управление потоком - это любое управление потоком, кроме if / then / else; в этом случае переключитесь или пока.
- Методы, содержащие блоки обработки исключений, не являются встроенными, хотя методы, которые генерируют исключения, по-прежнему являются кандидатами для встраивания.
- Если какой-либо из формальных аргументов метода является структурой, метод не будет встроенным.
- Etc ...
У меня вопрос ... Есть ли способ определить, что процесс оптимизации JIT решает пропустить по той или иной причине?
Я думаю, что я хочу знать, какие области кода, возможно, потребуется реструктурировать, чтобы гарантировать возможность оптимизации JIT.