Ответ 1
Если вы хотите больше, чем копировать вставку одного абзаца, в котором упоминается оптимизатор отражения из руководства, есть хорошее обсуждение здесь улучшения производительности от оптимизатора отражения, а также краткое обсуждение методов.
Из моего ограниченного понимания (все это происходит из чтения, без экспериментов с моей стороны, поэтому исправления приветствуются), тем более что на самом деле есть два оптимизатора отражения:
-
codedom, который в основном сгенерирован, а затем скомпилирован код (т.е. nhibernate генерирует код Getter/Setter для ваших сущностей и затем компилирует его). По внешнему виду это работает только на публичных участниках и, вероятно, дорого стоит использовать, потому что он наивно генерирует классы-оболочки (независимо от того, открыто ли какое-либо поле), пытается скомпилировать его и выдает исключение, если оно терпит неудачу.
-
создание легкого кода, в котором используется оккультная практика reflection.emit для получения/установки значений. Это все еще очень новая область для меня, но личные эксперименты с это показывают, что вы можете использовать SRE для быстрого управления частными переменными, а source, по-видимому, обеспечивает эмиссию для основных полей/свойств независимо от модификатора доступа. Это значение по умолчанию.
Что касается эффекта детонации - ну, из блестящих графиков в 1, похоже, если вы сохраняете/увлажняете много тяжелых объектов во время разработки, это может быть довольно существенным. Если нет (и я рискую предположить, что вы не во время тестирования/разработки), то кажется разумным отключить его.