Как выглядит код, который вызывает это? Я догадываюсь это что-то вроде:
NotifyOfPropertyChange(() => SomeVal);
что неявно:
NotifyOfPropertyChange(() => this.SomeVal);
, который делает захват this
, и в значительной степени означает, что дерево выражений должно быть построено (с Expression.Constant
) каждый раз с нуля. А потом разбираешь это каждый раз. Таким образом, накладные расходы определенно нетривиальны.
Не слишком ли слишком много ? Это вопрос, на который вы можете ответить только с профилированием и знанием вашего приложения. Он считается нормальным для большого количества использования MVC, но это (вообще) не вызывает его в длительном замкнутом цикле. Вам нужно выполнить профилирование в соответствии с желаемой целью производительности, в основном.