Я продолжаю работу над своим компилятором С# для моего класса компиляторов. На данный момент я почти закончил работу над разделами "Оптимизация компилятора" в своем учебнике.
В основном, у моего учебника не было компиляции Just-In-Time в виду, когда оно было написано, и мне любопытно, какие статические, предварительные jit-оптимизации выполняются компилятором С# в сравнении с тем, что он делает во время процесс JIT?
Когда я говорю с людьми о компиляции против CLR, я обычно слышу такие вещи, как "Большая часть оптимизаций выполняется JIT".
Являются ли такие вещи, как разворачивание цикла, постоянное сгибание/распространение, переплетение команд, выполненное до-Jit компилятором С# или обрабатываемое дрожанием? Если они не обрабатываются дрожанием, то какие оптимизации делает дрожание, уникальное для компилятора "точно вовремя"?