KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > javolution > Perf_Lang


1 /*
2  * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
3  * Copyright (C) 2005 - Javolution (http://javolution.org/)
4  * All rights reserved.
5  *
6  * Permission to use, copy, modify, and distribute this software is
7  * freely granted, provided that this notice is preserved.
8  */

9 package javolution;
10
11 import javolution.lang.MathLib;
12 import javolution.lang.Text;
13 import javolution.realtime.PoolContext;
14
15 /**
16  * <p> This class holds {@link javolution.lang} benchmark.</p>
17  *
18  * @author <a HREF="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
19  * @version 3.0, February 20, 2005
20  */

21 final class Perf_Lang extends Javolution implements Runnable {
22
23     private static final int COUNT = 1000;
24
25     private final String STRING = "Concatenates this line 1000 times (resulting in a text of about 80,000 characters)";
26
27     private final Text TEXT = Text.valueOf(STRING);
28
29     private final Text ONE_CHAR = Text.valueOf('X');
30     
31     /**
32      * Executes benchmark.
33      */

34     public void run() {
35         println("//////////////////////////////");
36         println("// Package: javolution.lang //");
37         println("//////////////////////////////");
38         println("");
39
40         println("-- String/StringBuffer versus Text --");
41         println("");
42
43         println("\"" + STRING + "\"");
44
45         print("String \"+\" operator: ");
46         startTime();
47         String str = "";
48         for (int j = 0; j < COUNT; j++) {
49             str += STRING;
50         }
51         println(endTime(1));
52
53         print("StringBuffer \"append\" : ");
54         startTime();
55         for (int i = 0; i < 100; i++) {
56             StringBuffer sb = new StringBuffer();
57             for (int j = 0; j < COUNT; j++) {
58                 sb.append(STRING);
59             }
60         }
61         println(endTime(100));
62
63         print("Text \"concat\" (heap): ");
64         startTime();
65         for (int i = 0; i < 100; i++) {
66             Text txt = Text.EMPTY;
67             for (int j = 0; j < COUNT; j++) {
68                 txt = txt.concat(TEXT);
69             }
70         }
71         println(endTime(100));
72
73         print("Text \"concat\" (stack): ");
74         startTime();
75         for (int i = 0; i < 100; i++) {
76             PoolContext.enter();
77             Text txt = Text.EMPTY;
78             for (int j = 0; j < COUNT; j++) {
79                 txt = txt.concat(TEXT);
80             }
81             PoolContext.exit();
82         }
83         println(endTime(100));
84
85         println("");
86         println("Inserts one character at random locations 1,000 times to the 80,000 characters text.");
87
88         print("StringBuffer insert: ");
89         startTime();
90         for (int i = 0; i < 100; i++) {
91             StringBuffer sb = new StringBuffer(str);
92             for (int j = 1; j < COUNT; j++) {
93                 int index = MathLib.randomInt(0, sb.length());
94                 sb.insert(index, 'X');
95             }
96         }
97         println(endTime(100));
98
99         print("Text insert (heap): ");
100         startTime();
101         for (int i = 0; i < 100; i++) {
102             Text txt = Text.valueOf(str);
103             for (int j = 1; j < COUNT; j++) {
104                 int index = MathLib.randomInt(0, txt.length());
105                 txt = txt.insert(index, ONE_CHAR);
106             }
107         }
108         println(endTime(100));
109
110         print("Text insert (stack): ");
111         startTime();
112         for (int i = 0; i < 100; i++) {
113             PoolContext.enter();
114             Text txt = Text.valueOf(str);
115             for (int j = 1; j < COUNT; j++) {
116                 int index = MathLib.randomInt(0, txt.length());
117                 txt = txt.insert(index, ONE_CHAR);
118             }
119             PoolContext.exit();
120         }
121         println(endTime(100));
122
123         println("");
124         println("Delete 1,000 times one character at random location from the 80,000 characters text.");
125
126         StringBuffer tmp = new StringBuffer();
127         print("StringBuffer delete: ");
128         startTime();
129         for (int i = 0; i < 100; i++) {
130             StringBuffer sb = new StringBuffer(str);
131             for (int j = 0; j < COUNT; j++) {
132                 int index = MathLib.randomInt(0, sb.length() - 1);
133                 sb.deleteCharAt(index);
134             }
135         }
136         println(endTime(100));
137
138         print("Text delete (heap): ");
139         startTime();
140         for (int i = 0; i < 100; i++) {
141             Text txt = Text.valueOf(str);
142             for (int j = 0; j < COUNT; j++) {
143                 int index = MathLib.randomInt(0, txt.length() - 1);
144                 txt = txt.delete(index, index + 1);
145             }
146         }
147         println(endTime(100));
148
149         print("Text delete (stack): ");
150         startTime();
151         for (int i = 0; i < 100; i++) {
152             PoolContext.enter();
153             Text txt = Text.valueOf(str);
154             for (int j = 0; j < COUNT; j++) {
155                 int index = MathLib.randomInt(0, txt.length() - 1);
156                 txt = txt.delete(index, index + 1);
157             }
158             PoolContext.exit();
159         }
160         println(endTime(100));
161
162         println("");
163     }
164 }
Popular Tags