<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:arial,helvetica,sans-serif;font-size:10pt"><div>Hi,<br><br>I had downloaded the logback version 0.9.2 sometime back and had done some performance comparison vis a vis log4j. At that time the tested call (logger.isDebugEnabled) was atleast 3 times faster in logback then log4j. But just today i downloaded the 0.9.5 version and it seems that due to some changes the performance has been hit . Now logback is a bit slower then log4j for the same call . (Although i must add that the performance of parameterized call has improved, and it now takes half of the time as compared to 0.9.2)<br><br>I am pasting the code used for the test.<br><br>- Mandeep<br><br>====================================================================================================<br>====================================================================================================<br><br>package
 mandy.test.programs;<br><br>import org.slf4j.Logger;<br>import org.slf4j.LoggerFactory;<br><br>public class LogTester2 {<br><br>&nbsp; static Logger logbacklogger = LoggerFactory.getLogger(LogTester2.class);<br>&nbsp; static org.apache.log4j.Logger log4jlogger = org.apache.log4j.Logger.getLogger(LogTester2.class);<br><br>&nbsp; // How many times should we try to log:<br>&nbsp; static int loop = 1000000;<br><br>&nbsp; public static void main(String[] args) throws InterruptedException {<br>&nbsp;&nbsp;&nbsp; initConfig();<br><br>&nbsp;&nbsp;&nbsp; // Let's run once for Just In Time compiler<br>&nbsp;&nbsp;&nbsp; log4jDirectDebugCall();<br>&nbsp;&nbsp;&nbsp; log4jTestedDebugCall();<br>&nbsp;&nbsp;&nbsp; logbackDirectDebugCall();<br>&nbsp;&nbsp;&nbsp; logbackTestedDebugCall();<br>&nbsp;&nbsp;&nbsp; logbackParametrizedDebugCall();<br><br>&nbsp;&nbsp;&nbsp; // let's run the tests and display the results:<br>&nbsp;&nbsp;&nbsp; long result1 =
 log4jDirectDebugCall();<br>&nbsp;&nbsp;&nbsp; long result2 = log4jTestedDebugCall();<br>&nbsp;&nbsp;&nbsp; long result3 = logbackDirectDebugCall();<br>&nbsp;&nbsp;&nbsp; long result4 = logbackTestedDebugCall();<br>&nbsp;&nbsp;&nbsp; long result5 = logbackParametrizedDebugCall();<br><br>&nbsp;&nbsp;&nbsp; System.out.println("###############################################");<br>&nbsp;&nbsp;&nbsp; System.out.println("Log4j direct debug call: " + result1);<br>&nbsp;&nbsp;&nbsp; System.out.println("Log4j tested (isDebugEnabled) debug call: " + result2);<br>&nbsp;&nbsp;&nbsp; System.out.println("Logback direct debug call: " + result3);<br>&nbsp;&nbsp;&nbsp; System.out.println("Logback tested (isDebugEnabled) debug call: " + result4);<br>&nbsp;&nbsp;&nbsp; System.out.println("Logback parametrized debug call: " + result5);<br>&nbsp;&nbsp;&nbsp; System.out.println("###############################################");<br>&nbsp; }<br><br>&nbsp; private static long
 log4jDirectDebugCall() {<br>&nbsp;&nbsp;&nbsp; Integer j = new Integer(2);<br>&nbsp;&nbsp;&nbsp; long start = System.nanoTime();<br>&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; loop; i++ ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log4jlogger.debug("SEE IF THIS IS LOGGED " + j + ".");<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return (System.nanoTime() - start) / loop;<br>&nbsp; }<br><br>&nbsp; private static long log4jTestedDebugCall() {<br>&nbsp;&nbsp;&nbsp; Integer j = new Integer(2);<br>&nbsp;&nbsp;&nbsp; long start = System.nanoTime();<br>&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; loop; i++ ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (log4jlogger.isDebugEnabled()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log4jlogger.debug("SEE IF THIS IS LOGGED " + j + ".");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return (System.nanoTime() - start) / loop;<br>&nbsp; }<br><br>&nbsp; private static long logbackDirectDebugCall()
 {<br>&nbsp;&nbsp;&nbsp; Integer j = new Integer(2);<br>&nbsp;&nbsp;&nbsp; long start = System.nanoTime();<br>&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; loop; i++ ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logbacklogger.debug("SEE IF THIS IS LOGGED " + j + ".");<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return (System.nanoTime() - start) / loop;<br>&nbsp; }<br><br>&nbsp; private static long logbackTestedDebugCall() {<br>&nbsp;&nbsp;&nbsp; Integer j = new Integer(2);<br>&nbsp;&nbsp;&nbsp; long start = System.nanoTime();<br>&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; loop; i++ ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (logbacklogger.isDebugEnabled())<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logbacklogger.debug("SEE IF THIS IS LOGGED " + j + ".");<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return (System.nanoTime() - start) / loop;<br>&nbsp; }<br><br>&nbsp; private static long logbackParametrizedDebugCall() {<br>&nbsp;&nbsp;&nbsp; Integer j = new
 Integer(2);<br>&nbsp;&nbsp;&nbsp; long start = System.nanoTime();<br>&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; loop; i++ ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logbacklogger.debug("SEE IF THIS IS LOGGED {}.", j);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return (System.nanoTime() - start) / loop;<br>&nbsp; }<br><br>&nbsp; private static void initConfig() {<br>&nbsp;&nbsp;&nbsp; org.apache.log4j.Logger log4jRoot = org.apache.log4j.Logger.getRootLogger();<br>&nbsp;&nbsp;&nbsp; log4jRoot.setLevel(org.apache.log4j.Level.INFO);<br><br>&nbsp;&nbsp;&nbsp; ch.qos.logback.classic.Logger lbRoot = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("ROOT");<br>&nbsp;&nbsp;&nbsp; lbRoot.setLevel(ch.qos.logback.classic.Level.INFO);<br><br>&nbsp;&nbsp;&nbsp; // create the loggers<br>&nbsp;&nbsp;&nbsp; org.apache.log4j.Logger.getLogger("perfTest");<br>&nbsp;&nbsp;&nbsp; org.apache.log4j.Logger.getLogger("perfTest.ch");<br>&nbsp;&nbsp;&nbsp;
 org.apache.log4j.Logger.getLogger("perfTest.ch.qos");<br>&nbsp;&nbsp;&nbsp; org.apache.log4j.Logger.getLogger("perfTest.ch.qos.logback");<br>&nbsp;&nbsp;&nbsp; LoggerFactory.getLogger("perfTest");<br>&nbsp;&nbsp;&nbsp; LoggerFactory.getLogger("perfTest.ch");<br>&nbsp;&nbsp;&nbsp; LoggerFactory.getLogger("perfTest.ch.qos");<br>&nbsp;&nbsp;&nbsp; LoggerFactory.getLogger("perfTest.ch.qos.logback");<br>&nbsp; }<br><br>}<br><br></div></div><br>
      <hr size=1><a href="http://us.rd.yahoo.com/evt=48226/*http://new.toolbar.yahoo.com/toolbar/features/norton/index.php">Get the free Yahoo! toolbar</a> and rest assured with the added security of spyware protection.
 </body></html>