aop-logging-questions Производительность зависит от того, как это делается.
Полагаю, вы хотите включить в свой код советы по ведению журнала. dynamic aop возможно только
- для виртуальных методов и
- для интерфейсов.
Так что, вероятно, вам нужно время компиляцииАОП .
Я не знаю, как пост-диез делает AOP.с компиляцией linfu-aop каждый метод получает предварительное и последующее выполнение, где динамически определяется, выполняются ли и какие аспекты aop.этот трюк фактически удаляет ограничения на не виртуальных методах, делая их псевдовиртуальными.
Я предпочитаю делать manuall (= non-aop -) ведение журнала с помощью common.logging , который использует провайдера log4.net.Это решение имеет минимальное время выполнения, если ведение журнала отключено .Включение / отключение ведения журнала может быть выполнено выборочно без перекомпиляции - это всего лишь конфигурационный файл, который может сказать «вся активность уровня данных с sql», но не «sql в модуле xyz».
дорогостоящий анализ трассировки стека (какой класся и вход в систему или для меня в отладке / трассировке, Info, ....) выполняется только один раз для каждого класса.
Отключенные журналы могут быть перенесены в одну дешевую переменную Boolen оценки плюс один, если.Эта скорость для оптимизации размера может обрабатываться синтаксисом
logger.Debug(m => m("... costly string formatting "));
, который скомпилирован в нечто похожее на
if (logger.IsDebugEnabled)
call anonymous method that does
the expensive string formatting