svn commit: r499 - in logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net: . testObjectBuilders

Author: seb Date: Thu Aug 31 09:40:02 2006 New Revision: 499 Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/NOPOutputStream.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/Builder.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/LoggingEvent2Builder.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/LoggingEventBuilder.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/MinimalExtBuilder.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/MinimalSerBuilder.java Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SerializationPerfsTest.java Log: - Improved code readability in the perfs test - Added an NOPOutputstream Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/NOPOutputStream.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/NOPOutputStream.java Thu Aug 31 09:40:02 2006 @@ -0,0 +1,14 @@ +package ch.qos.logback.classic.net; + +import java.io.IOException; +import java.io.OutputStream; + +public class NOPOutputStream extends OutputStream { + + @Override + public void write(int b) throws IOException { + // do nothing + + } + +} Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SerializationPerfsTest.java ============================================================================== --- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SerializationPerfsTest.java (original) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SerializationPerfsTest.java Thu Aug 31 09:40:02 2006 @@ -1,209 +1,90 @@ package ch.qos.logback.classic.net; -import java.io.ByteArrayOutputStream; -import java.io.Externalizable; import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; import java.io.ObjectOutputStream; -import java.io.Serializable; + +import ch.qos.logback.classic.net.testObjectBuilders.Builder; +import ch.qos.logback.classic.net.testObjectBuilders.LoggingEvent2Builder; +import ch.qos.logback.classic.net.testObjectBuilders.LoggingEventBuilder; +import ch.qos.logback.classic.net.testObjectBuilders.MinimalExtBuilder; +import ch.qos.logback.classic.net.testObjectBuilders.MinimalSerBuilder; import junit.framework.TestCase; -import ch.qos.logback.classic.Level; -import ch.qos.logback.classic.LoggerContext; -import ch.qos.logback.classic.spi.LoggingEvent; -import ch.qos.logback.classic.spi.LoggingEvent2; public class SerializationPerfsTest extends TestCase { - LoggerContext lc; - - int loopNumber = 10000; + ObjectOutputStream oos; + int loopNumber = 5000; + int resetFrequency = 100; + /** * Last results: * - * Minimal Object Externalization: median time = 9981 after 10000 writes. - * Minimal Object Serialization: median time = 13127 after 10000 writes. - * Externalization: median time = 14008 after 10000 writes. - * Serialization: median time = 31320 after 10000 writes.. + * Minimal Object Externalization: average time = 6511 after 10000 writes. + * Minimal Object Serialization: average time = 7883 after 10000 writes. + * Externalization: average time = 9641 after 10000 writes. Serialization: + * average time = 25729 after 10000 writes. */ public void setUp() throws Exception { super.setUp(); - lc = new LoggerContext(); + oos = new ObjectOutputStream(new NOPOutputStream()); } public void tearDown() throws Exception { super.tearDown(); - lc = null; - } - - public void testWithMinimalExternalization() throws IOException { - ObjectOutputStream oos = new ObjectOutputStream(new ByteArrayOutputStream()); - - // first run for just in time compiler - for (int i = 0; i < loopNumber; i++) { - oos.writeObject(buildEvent(i)); - } - - // second run - Long t1; - Long t2; - Long total = 0L; - int resetFrequency = 20; - int counter = 0; - for (int i = 0; i < loopNumber; i++) { - t1 = System.nanoTime(); - oos.writeObject(new MinimalExt(i)); - t2 = System.nanoTime(); - total += (t2 - t1); - oos.flush(); - if (++counter >= resetFrequency) { - oos.reset(); - } - } - System.out.println("Minimal Object Externalization: median time = " + total - / loopNumber + " after " + loopNumber + " writes."); - } - - public void testWithMinimalSerialization() throws IOException { - ObjectOutputStream oos = new ObjectOutputStream(new ByteArrayOutputStream()); - - // first run for just in time compiler - for (int i = 0; i < loopNumber; i++) { - oos.writeObject(buildEvent(i)); - } - - // second run - Long t1; - Long t2; - Long total = 0L; - int resetFrequency = 20; - int counter = 0; - for (int i = 0; i < loopNumber; i++) { - t1 = System.nanoTime(); - oos.writeObject(new MinimalSer(i)); - t2 = System.nanoTime(); - total += (t2 - t1); - oos.flush(); - if (++counter >= resetFrequency) { - oos.reset(); - } - } - System.out.println("Minimal Object Serialization: median time = " + total - / loopNumber + " after " + loopNumber + " writes."); + oos = null; } - public void testWithExternalization() throws IOException { - - ObjectOutputStream oos = new ObjectOutputStream(new ByteArrayOutputStream()); - + public void testPerf(Builder builder, String label) throws IOException { + // first run for just in time compiler - for (int i = 0; i < loopNumber; i++) { - oos.writeObject(buildEvent(i)); - } - - // second run - Long t1; - Long t2; - Long total = 0L; - int resetFrequency = 20; int counter = 0; for (int i = 0; i < loopNumber; i++) { - t1 = System.nanoTime(); - oos.writeObject(buildEvent(i)); - t2 = System.nanoTime(); - total += (t2 - t1); + oos.writeObject(builder.build(i)); oos.flush(); if (++counter >= resetFrequency) { oos.reset(); } } - System.out.println("Externalization: median time = " + total / loopNumber - + " after " + loopNumber + " writes."); - } - - public void testWithSerialization() throws IOException { - - ObjectOutputStream oos = new ObjectOutputStream(new ByteArrayOutputStream()); - - // first run for just in time compiler - for (int i = 0; i < loopNumber; i++) { - oos.writeObject(buildEvent2(i)); - } // second run Long t1; Long t2; Long total = 0L; - int resetFrequency = 20; - int counter = 0; + counter = 0; + t1 = System.nanoTime(); for (int i = 0; i < loopNumber; i++) { - t1 = System.nanoTime(); - oos.writeObject(buildEvent2(i)); - t2 = System.nanoTime(); - total += (t2 - t1); + oos.writeObject(builder.build(i)); oos.flush(); if (++counter >= resetFrequency) { oos.reset(); } } - System.out.println("Serialization: median time = " + total / loopNumber - + " after " + loopNumber + " writes."); - } - - private LoggingEvent buildEvent(int i) { - LoggingEvent le = new LoggingEvent(); - le.setLevel(Level.DEBUG); - le.setLogger(lc.getLogger(LoggerContext.ROOT_NAME)); - // 45 characters message - le.setMessage("aaaaabbbbbcccccdddddaaaaabbbbbcccccdddddaaaa" + i); - le.setThreadName("threadName"); - return le; - } - - private LoggingEvent2 buildEvent2(int i) { - LoggingEvent2 le = new LoggingEvent2(); - le.setLevel(Level.DEBUG); - le.setLogger(lc.getLogger(LoggerContext.ROOT_NAME)); - // 45 characters message - le.setMessage("aaaaabbbbbcccccdddddaaaaabbbbbcccccdddddaaaa" + i); - le.setThreadName("threadName"); - return le; + t2 = System.nanoTime(); + total += (t2 - t1); + System.out.println(label+" : average time = " + + total / loopNumber + " after " + loopNumber + " writes."); } -} - -class MinimalExt implements Externalizable { - - private static final long serialVersionUID = -1367146218373963709L; - - String message; - public MinimalExt(int i) { - // 45 characters message - message = "aaaaabbbbbcccccdddddaaaaabbbbbcccccdddddaaaa" + i; + public void testWithMinimalExternalization() throws IOException { + Builder builder = new MinimalExtBuilder(); + testPerf(builder, "Minimal object externalization"); } - public void readExternal(ObjectInput in) throws IOException, - ClassNotFoundException { - message = (String) in.readObject(); - + public void testWithMinimalSerialization() throws IOException { + Builder builder = new MinimalSerBuilder(); + testPerf(builder, "Minimal object serialization"); } - public void writeExternal(ObjectOutput out) throws IOException { - out.writeObject(message); + public void testWithExternalization() throws IOException { + Builder builder = new LoggingEventBuilder(); + testPerf(builder, "LoggingEvent object externalization"); } -} -class MinimalSer implements Serializable { - - private static final long serialVersionUID = 2807646397580899815L; - - String message; - - public MinimalSer(int i) { - // 45 characters message - message = "aaaaabbbbbcccccdddddaaaaabbbbbcccccdddddaaaa" + i; + public void testWithSerialization() throws IOException { + Builder builder = new LoggingEvent2Builder(); + testPerf(builder, "LoggingEvent object serialization"); } } Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/Builder.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/Builder.java Thu Aug 31 09:40:02 2006 @@ -0,0 +1,6 @@ +package ch.qos.logback.classic.net.testObjectBuilders; + +public interface Builder { + + Object build(int i); +} Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/LoggingEvent2Builder.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/LoggingEvent2Builder.java Thu Aug 31 09:40:02 2006 @@ -0,0 +1,18 @@ +package ch.qos.logback.classic.net.testObjectBuilders; + +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.spi.LoggingEvent2; + +public class LoggingEvent2Builder implements Builder { + + public Object build(int i) { + LoggingEvent2 le = new LoggingEvent2(); + le.setLevel(Level.DEBUG); + le.setLogger(new LoggerContext().getLogger(LoggerContext.ROOT_NAME)); + // 45 characters message + le.setMessage("aaaaabbbbbcccccdddddaaaaabbbbbcccccdddddaaaa" + i); + le.setThreadName("threadName"); + return le; + } +} Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/LoggingEventBuilder.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/LoggingEventBuilder.java Thu Aug 31 09:40:02 2006 @@ -0,0 +1,18 @@ +package ch.qos.logback.classic.net.testObjectBuilders; + +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.spi.LoggingEvent; + +public class LoggingEventBuilder implements Builder { + + public Object build(int i) { + LoggingEvent le = new LoggingEvent(); + le.setLevel(Level.DEBUG); + le.setLogger(new LoggerContext().getLogger(LoggerContext.ROOT_NAME)); + // 45 characters message + le.setMessage("aaaaabbbbbcccccdddddaaaaabbbbbcccccdddddaaaa" + i); + le.setThreadName("threadName"); + return le; + } +} Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/MinimalExtBuilder.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/MinimalExtBuilder.java Thu Aug 31 09:40:02 2006 @@ -0,0 +1,37 @@ +package ch.qos.logback.classic.net.testObjectBuilders; + +import java.io.Externalizable; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; + + +public class MinimalExtBuilder implements Builder { + + public Object build(int i) { + return new MinimalExt(i); + } + +} + +class MinimalExt implements Externalizable { + + private static final long serialVersionUID = -1367146218373963709L; + + String message; + + public MinimalExt(int i) { + // 45 characters message + message = "aaaaabbbbbcccccdddddaaaaabbbbbcccccdddddaaaa" + i; + } + + public void readExternal(ObjectInput in) throws IOException, + ClassNotFoundException { + message = (String) in.readObject(); + + } + + public void writeExternal(ObjectOutput out) throws IOException { + out.writeObject(message); + } +} Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/MinimalSerBuilder.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/MinimalSerBuilder.java Thu Aug 31 09:40:02 2006 @@ -0,0 +1,24 @@ +package ch.qos.logback.classic.net.testObjectBuilders; + +import java.io.Serializable; + + +public class MinimalSerBuilder implements Builder{ + + public Object build(int i) { + return new MinimalSer(i); + } + +} + +class MinimalSer implements Serializable { + + private static final long serialVersionUID = 2807646397580899815L; + + String message; + + public MinimalSer(int i) { + // 45 characters message + message = "aaaaabbbbbcccccdddddaaaaabbbbbcccccdddddaaaa" + i; + } +} \ No newline at end of file
participants (1)
-
noreply.seb@qos.ch