Оптимизация и побочные эффекты C #

Может ли оптимизация, выполненная компилятором C # или JITter иметь видимые побочные эффекты?

Один пример, который я отключил.

var x = new Something();
A(x);
B(x);

При вызове A (x) x гарантированно сохранится до конца A - потому что B использует тот же параметр. Но если B определено как

public void B(Something x) { }

, то B (x) может быть удален оптимизатором, и тогда вызов GC.KeepAlive (x) может

Может ли эта оптимизация действительно выполняться JITter?

Существуют ли другие оптимизации, которые могут иметь видимые побочные эффекты, кроме изменений трассировки стека?

5
задан configurator 19 January 2011 в 18:52
поделиться