KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > PerfW3C


1
2 import java.io.BufferedWriter JavaDoc;
3 import java.io.File JavaDoc;
4 import java.io.FileWriter JavaDoc;
5 import java.io.IOException JavaDoc;
6
7 import javax.xml.transform.Transformer JavaDoc;
8 import javax.xml.transform.TransformerFactory JavaDoc;
9 import javax.xml.transform.dom.DOMResult JavaDoc;
10 import javax.xml.transform.dom.DOMSource JavaDoc;
11 import javax.xml.transform.stream.StreamSource JavaDoc;
12 import org.apache.xerces.dom.DocumentImpl;
13 import org.apache.xml.serialize.OutputFormat;
14 import org.apache.xml.serialize.XMLSerializer;
15 import org.apache.xpath.XPathAPI;
16
17 import org.dom4j.io.SAXReader;
18 import org.w3c.dom.Document JavaDoc;
19 import org.w3c.dom.Element JavaDoc;
20 import org.w3c.dom.Node JavaDoc;
21 import org.w3c.dom.NodeList JavaDoc;
22
23 public class PerfW3C {
24
25     public static void main(String JavaDoc args[]) {
26         Document JavaDoc doc;
27         System.err.println("W3C createDocument:");
28
29         int numrec;
30         long start = 0;
31         long end = 0;
32
33         numrec = 1000;
34         System.out.println("\n1000 Elements ---------------------------------");
35         doc = PerfW3C.createDocument(numrec, 20, 1);
36         PerfW3C.write(doc, "w3c_" + numrec + ".xml");
37         PerfW3C.parse(numrec, 1);
38         PerfW3C.transform(doc, "item.xslt", 1);
39         PerfW3C.xpath(doc, "/*/*/Attr1x1", 1);
40         PerfW3C.xpath(doc, "/*/*/Attr1x500", 1);
41         PerfW3C.xpath(doc, "/*/*/Attr1x999", 1);
42         PerfW3C.xpathNodes(doc, "/*/*/Attr1x1", 1);
43         PerfW3C.xpathNodes(doc, "/*/*/Attr1x500", 1);
44         PerfW3C.xpathNodes(doc, "/*/*/Attr1x999", 1);
45         PerfW3C.xpathNodes(doc, "/*/Item", 1);
46
47         numrec = 100;
48         System.out.println("\n100 Elements ----------------------------------");
49         doc = PerfW3C.createDocument(numrec, 20, 1);
50         PerfW3C.write(doc, "w3c_" + numrec + ".xml");
51         PerfW3C.transform(doc, "item.xslt", 10);
52         PerfW3C.parse(numrec, 10);
53         PerfW3C.xpath(doc, "/*/*/Attr0x1", 10);
54         PerfW3C.xpath(doc, "/*/*/Attr0x50", 10);
55         PerfW3C.xpath(doc, "/*/*/Attr0x99", 10);
56         PerfW3C.xpathNodes(doc, "/*/*/Attr0x0", 10);
57         PerfW3C.xpathNodes(doc, "/*/*/Attr1x50", 10);
58         PerfW3C.xpathNodes(doc, "/*/*/Attr1x99", 10);
59         PerfW3C.xpathNodes(doc, "/*/Item", 10);
60
61         numrec = 10;
62         System.out.println("\n10 Elements -----------------------------------");
63         doc = PerfW3C.createDocument(numrec, 20, 10);
64         PerfW3C.write(doc, "w3c_" + numrec + ".xml");
65         PerfW3C.parse(numrec, 50);
66         PerfW3C.transform(doc, "item.xslt", 10);
67         PerfW3C.xpath(doc, "/*/*/Attr5", 100);
68         PerfW3C.xpathNodes(doc, "/*/*/Attr1x5", 100);
69         PerfW3C.xpathNodes(doc, "/*/Item", 100);
70
71         numrec = 1;
72         System.out.println("\n1 Elements ------------------------------------");
73         doc = PerfW3C.createDocument(numrec, 20, 10);
74         PerfW3C.write(doc, "w3c_" + numrec + ".xml");
75         PerfW3C.parse(numrec, 100);
76         PerfW3C.transform(doc, "item.xslt", 10);
77         PerfW3C.xpath(doc, "/*/*/Attr1x0", 100);
78         PerfW3C.xpathNodes(doc, "/*/*/Attr1x0", 100);
79         PerfW3C.xpathNodes(doc, "/*/Item", 100);
80
81     }
82
83     public static Document JavaDoc createDocument(int iNumRecs, int iNumFlds, int pp) {
84
85         double start = System.currentTimeMillis();
86         Document JavaDoc document = null;
87         for (int kk = 0; kk < pp; kk++) {
88             document = new DocumentImpl();
89
90             Element JavaDoc root = document.createElement("ItemResultSet"); // Create
91
// Root
92
// Element
93
document.appendChild(root);
94
95             for (int ii = 0; ii < iNumRecs; ii++) {
96
97                 Element JavaDoc Record = document.createElement("Item");
98                 root.appendChild(Record);
99                 for (int jj = 0; jj < iNumFlds; jj++) {
100                     /*
101                      * AttrImpl a =
102                      * (AttrImpl)document.createAttribute("Attr"+jj);
103                      * a.setNodeValue("123456789"); Record.setAttributeNode(a);
104                      */

105                     Element JavaDoc field = document.createElement("Attr" + jj + "x"
106                             + ii);
107                     field.appendChild(document.createTextNode("123456789"));
108                     Record.appendChild(field);
109
110                 }
111             }
112         }
113
114         double end = System.currentTimeMillis();
115
116         System.err.println("Creation time :" + (end - start) / pp);
117
118         return document;
119     }
120
121     public static void write(Document JavaDoc document, String JavaDoc name) {
122
123         long start = System.currentTimeMillis();
124         // lets write to a file
125

126         OutputFormat format = new OutputFormat(document); // Serialize DOM
127
format.setIndent(2);
128         format.setLineSeparator(System.getProperty("line.separator"));
129         format.setLineWidth(80);
130         try {
131
132             FileWriter JavaDoc writer = new FileWriter JavaDoc(name);
133             BufferedWriter JavaDoc buf = new BufferedWriter JavaDoc(writer);
134             XMLSerializer FileSerial = new XMLSerializer(writer, format);
135             FileSerial.asDOMSerializer(); // As a DOM Serializer
136
FileSerial.serialize(document);
137
138         } catch (IOException JavaDoc ioe) {
139             ioe.printStackTrace();
140
141         }
142
143         long end = System.currentTimeMillis();
144
145         System.err.println("W3C File write time :" + (end - start) + " "
146                 + name);
147     }
148
149     public static Document JavaDoc parse(int iNumRecs, int kk) {
150
151         File JavaDoc file = new File JavaDoc("dom4j_" + iNumRecs + ".xml");
152         double start = System.currentTimeMillis();
153         Document JavaDoc document = null;
154
155         for (int pp = 0; pp < kk; pp++) {
156             try {
157                 SAXReader SAXrd = new SAXReader();
158                 SAXrd.read(file);
159             } catch (Exception JavaDoc e) {
160                 e.printStackTrace();
161             }
162         }
163
164         double end = System.currentTimeMillis();
165
166         // System.err.println("DOM4J createDocument:" + "Num Rec. = " + iNumRecs
167
// + " Num. Fld.=" + iNumFlds);
168
System.err.println("Parsing time for :" + iNumRecs + " "
169                 + (end - start) / kk);
170
171         return document;
172     }
173
174     public static void transform(Document JavaDoc xmlDoc, String JavaDoc xslFile, int kk) {
175         int ii = 1;
176         try {
177             TransformerFactory JavaDoc factory = TransformerFactory.newInstance();
178             Transformer JavaDoc transformer = factory.newTransformer(new StreamSource JavaDoc(
179                     xslFile));
180
181             long start = System.currentTimeMillis();
182             for (ii = 0; ii < kk; ii++) {
183                 DOMSource JavaDoc source = new DOMSource JavaDoc(xmlDoc);
184                 DOMResult JavaDoc result = new DOMResult JavaDoc();
185                 transformer.transform(source, result);
186             }
187             long end = System.currentTimeMillis();
188
189             System.err.println("W3C transform time :" + (end - start) / ii);
190         } catch (Exception JavaDoc e) {
191             e.printStackTrace();
192         }
193
194     }
195
196     public static void xpath(Document JavaDoc document, String JavaDoc xpathExp, int pp) {
197
198         long start = System.currentTimeMillis();
199
200         for (int ii = 0; ii < pp; ii++) {
201
202             try {
203
204                 Node JavaDoc node = XPathAPI.selectSingleNode(document, xpathExp);
205                 if ((node != null) & (ii == 0)) {
206                     String JavaDoc val = node.getNodeName();
207                     // System.out.println(val);
208
}
209             } catch (Exception JavaDoc e) {
210                 e.printStackTrace();
211
212             }
213
214         }
215
216         long end = System.currentTimeMillis();
217
218         System.err.println("W3C xpath time :" + 1.000 * (end - start) / pp);
219     }
220
221     public static void xpathNodes(Document JavaDoc document, String JavaDoc xpathExp, int pp) {
222
223         long start = System.currentTimeMillis();
224
225         for (int ii = 0; ii < pp; ii++) {
226
227             try {
228
229                 NodeList JavaDoc nodeList = XPathAPI.selectNodeList(document, xpathExp);
230                 if ((nodeList != null) && (nodeList.getLength() > 0)) {
231                     Node JavaDoc node = nodeList.item(0);
232                     if ((node != null) & (ii == 0)) {
233                         String JavaDoc val = node.getNodeName();
234                         // System.out.println(val);
235
}
236                 }
237             } catch (Exception JavaDoc e) {
238                 e.printStackTrace();
239
240             }
241
242         }
243
244         long end = System.currentTimeMillis();
245
246         System.err.println("W3C xpathNodes time :" + 1.000 * (end - start)
247                 / pp);
248     }
249
250 }
251
Popular Tags