log4j2logback打印日志的效率问题【细节3】bean属性拷贝【细节4】
2019獨角獸企業重金招聘Python工程師標準>>>
1).在打印日志時,我們可以使用下面的代碼:
logger.debug("Entry Number :"+ i + " is "+String.valueOf(entry[i]));
這樣做的效率比較低。因為他會遭受到【變量i】和【entry】轉換成一個字符串,并且再加上字符串的拼接。這些時間不管你打印不打印這些日志都會消耗。
即有可能你講DEBUG的模式打印的日志的功能關閉了,但是上面那就話還是會消耗時間。
?
2).但是如果變成下面的代碼,就不會消耗時間了:
if(logger.isDebugEnabled()) { logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i])); }如果debug模式關閉,就不會消耗時間,如果debug模式是開放的,就會消耗時間。從而提高了效率
?
3).使用Logback中的字符串的占位符:
在logback中占位符是一對花括號:【{}】.
對于:
Object entry = new SomeObject(); logger.debug("The entry is {}.", entry);如果日志需要的打印的話,就會將{}變成對應的變量的值。如果不需要打印的話,他也不會消耗時間。如同加上了
if(logger.isDebugEnabled()) {這句話。提高了效率。
?
4)當然也可有多個變量的值:
logger.debug("The new entry is {}. It replaces {}.", entry, oldEntry); Object[] paramArray = {newVal, below, above}; logger.debug("Value {} was inserted between {} and {}.", paramArray);?
5)所以,在打印日志時:為了提高效率:有兩種方式:
①加上logger.isDebugEnabled()或者logger.isInfoEnable()等等
②使用占位符。
----------------------------------------------------------------------------------------------------
下面是一個示例:打開debug
bean屬性拷貝
Bean復制的幾種框架性能比較(Apache BeanUtils、PropertyUtils,Spring BeanUtils,Cglib BeanCopier)
cglib是最快的
如果是mapping映射使用:?orika
另外還可以使用springside4(各種優秀框架集成)
轉載于:https://my.oschina.net/u/1266221/blog/794004
總結
以上是生活随笔為你收集整理的log4j2logback打印日志的效率问题【细节3】bean属性拷贝【细节4】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《DNF》新职业龙骑士二觉技能介绍
- 下一篇: 像素魂斗罗2闪退怎么办 闪退的解决方法