Я могу представить, что существует ряд оптимизаций, уникальных для JIT; в частности, любая оптимизация, которая зависит от среды / контекста, в котором выполняется приложение. (Обратите внимание, что все нижеприведенное является гипотетическим, я не знаю наверняка, который или если какой-либо из них действительно выполняется)
Самое скучное: JIT может оптимизироваться в зависимости от 32-битной / 64-битной операционной системы или даже потенциально в зависимости от конкретной архитектуры процессора.
Не применимо: Более интересно: JIT может оптимизировать все, что работает только в режиме отладки (например, определенный условный код), когда приложение не запускается в контексте отладки.
Самое интересное: JIT может оптимизировать условные ветви в классе, которые зависят только от поля readonly
, потому что по крайней мере теоретически это значение никогда не изменится во время выполнения класса.
По сути, я бы предположил, что отсроченная оптимизация до JIT, как правило, была бы подходящим вариантом, потому что во время JIT имеется наибольшая доступная информация о контексте, в котором фактически выполняется код, что делает возможными более значимые оптимизации.