Ich mache einige Post-Build-CIL Weberei, die CIL zu allen Methoden in einer Baugruppe (mit anderen Worten Tonnen von Methoden) hinzufügt. Jede Methode prüft, ob ein bestimmter Wert Null ist. Beispiel (C# Reflector'd Version von CIL-Code):Tatsächliche Leistung von Feldern vs. Eigenschaften
// CIL woven region start
if (MyType.Something == null) {
// ... some new stuff
}
// CIL woven region end
Was ist die Auswirkung auf die Leistung von MyType.Something mit als Eigenschaft im Vergleich zu einem Feld? Ich weiß, dass ich gelesen habe, dass der C# -Compiler spezielle Optimierungen durchführt und es in diesem Fall keine Auswirkungen auf die Leistung geben sollte ... aber was ist mit dem direkten CIL-Code (kein C# -Compiler) ...? Oder ist es der JIT-Compiler, der diese Optimierungen ermöglicht (so dass direkter CIL-Code immer noch Vorteile bietet)?
Wird die Ausgabe von OpCode.Call für den Accessor der statischen Eigenschaft schlechter sein als die von Ldsfld (bedenken Sie, dass dies über Zehntausende von Aufrufen erfolgt, da jede Methode in der Assembly verwoben ist)?
Danke.
könnten Sie erklären, warum haben Sie sich entschieden, das zu implementieren? – Andrey
Implementieren was? – Jeff