Wenn Sie mehr als eine Kopie des einzigen Absatzes über den Reflection Optimizer aus dem Handbuch wünschen, gibt es eine gute Diskussion aquí der Leistungsverbesserungen durch den Reflexionsoptimierer sowie eine kurze Diskussion der Methoden.
Meinem begrenzten Verständnis nach (das kommt alles vom Lesen, keine Experimente meinerseits, also sind Korrekturen willkommen) ist die Kurzfassung, dass es eigentlich zwei Reflexionsoptimierer gibt:
-
codedom der im Grunde generierter und dann kompilierter Code ist (d.h. nhibernate generiert Wrapper-Getter/Setter-Code für Ihre Entitäten und kompiliert ihn dann). So wie es aussieht, funktioniert dies nur bei öffentlichen Mitgliedern und ist wahrscheinlich extra teuer, weil es naiv die Wrapper-Klassen generiert (unabhängig davon, ob ein bestimmtes Feld öffentlich ist), versucht, sie zu kompilieren, und eine Ausnahme auslöst, wenn dies fehlschlägt.
-
leichte Codegenerierung , die die okkulte Praxis von reflection.emit nutzt, um Werte zu erhalten/zu setzen. Dies ist noch ein sehr neues Gebiet für mich, aber persönliche Experimente mit ce zeigt, dass Sie SRE verwenden können, um private Variablen sehr schnell zu manipulieren, und die 根源 scheint zumindest die Emission für grundlegende Felder/Eigenschaften unabhängig vom Zugriffsmodifikator zu ermöglichen. Dies ist die Standardeinstellung.
Was den Dominoeffekt betrifft - nun, die glänzenden Grafiken in 1 Wenn Sie während der Entwicklung viele schwere Objekte aufbewahren/befeuchten, könnte das ganz schön ins Gewicht fallen. Wenn nicht (und ich wage die Vermutung, dass Sie nicht während der Test-/Entwicklungsphase), dann scheint es durchaus sinnvoll, es zu deaktivieren.