log4j2&logback打印日誌的效率問題【細節3】bean屬性拷貝【細節4】

1).在打印日誌時,咱們能夠使用下面的代碼:html

logger.debug("Entry Number :"+ i + " is "+String.valueOf(entry[i]));spring

這樣作的效率比較低。由於他會遭受到【變量i】和【entry】轉換成一個字符串,而且再加上字符串的拼接。這些時間無論你打印不打印這些日誌都會消耗。app

即有可能你講DEBUG的模式打印的日誌的功能關閉了,可是上面那就話仍是會消耗時間。框架

 

2).可是若是變成下面的代碼,就不會消耗時間了:ide

if(logger.isDebugEnabled()) { 
  logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));
}

若是debug模式關閉,就不會消耗時間,若是debug模式是開放的,就會消耗時間。從而提升了效率性能

 

3).使用Logback中的字符串的佔位符spa

在logback中佔位符是一對花括號:【{}】.debug

對於:日誌

Object entry = new SomeObject(); 
logger.debug("The entry is {}.", entry);

若是日誌須要的打印的話,就會將{}變成對應的變量的值。若是不須要打印的話,他也不會消耗時間。如同加上了htm

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(各類優秀框架集成)

相關文章
相關標籤/搜索