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