1 package ch.qos.logback.access.net;
2
3 import java.io.IOException;
4 import java.io.ObjectOutputStream;
5
6 import junit.framework.TestCase;
7 import ch.qos.logback.access.dummy.DummyAccessEventBuilder;
8 import ch.qos.logback.access.spi.AccessEvent;
9
10 public class SerializationPerfTest extends TestCase {
11
12 ObjectOutputStream oos;
13
14 int loopNumber = 10000;
15 int resetFrequency = 100;
16 int pauseFrequency = 10;
17 long pauseLengthInMillis = 20;
18
19
20 public void setUp() throws Exception {
21 super.setUp();
22 oos = new ObjectOutputStream(new NOPOutputStream());
23
24 }
25
26 public void tearDown() throws Exception {
27 super.tearDown();
28 oos.close();
29 oos = null;
30 }
31
32 public void test1() throws Exception {
33
34 int resetCounter = 0;
35 int pauseCounter = 0;
36 for (int i = 0; i < loopNumber; i++) {
37 try {
38 AccessEvent ae = DummyAccessEventBuilder.buildNewAccessEvent();
39
40 ae.prepareForDeferredProcessing();
41 oos.writeObject(ae);
42 oos.flush();
43 if (++resetCounter >= resetFrequency) {
44 oos.reset();
45 resetCounter = 0;
46 }
47 if (++pauseCounter >= pauseFrequency) {
48 Thread.sleep(pauseLengthInMillis);
49 pauseCounter = 0;
50 }
51
52 } catch (IOException ex) {
53 fail(ex.getMessage());
54 }
55 }
56
57
58 Long t1;
59 Long t2;
60 Long total = 0L;
61 resetCounter = 0;
62 pauseCounter = 0;
63
64 for (int i = 0; i < loopNumber; i++) {
65 try {
66 AccessEvent ae = DummyAccessEventBuilder.buildNewAccessEvent();
67 t1 = System.nanoTime();
68
69 ae.prepareForDeferredProcessing();
70 oos.writeObject(ae);
71 oos.flush();
72 t2 = System.nanoTime();
73 total += (t2 - t1);
74 if (++resetCounter >= resetFrequency) {
75 oos.reset();
76 resetCounter = 0;
77 }
78 if (++pauseCounter >= pauseFrequency) {
79 Thread.sleep(pauseLengthInMillis);
80 pauseCounter = 0;
81 }
82 } catch (IOException ex) {
83 fail(ex.getMessage());
84 }
85 }
86
87 total /= (1000);
88 System.out.println("Loop done : average time = " + total / loopNumber
89 + " microsecs after " + loopNumber + " writes.");
90
91 }
92
93
94
95 }