KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > PerfDOM4J


1
2 import java.io.File JavaDoc;
3 import java.io.FileWriter JavaDoc;
4 import java.io.IOException JavaDoc;
5 import java.util.List JavaDoc;
6
7 import javax.xml.transform.Source JavaDoc;
8 import javax.xml.transform.Transformer JavaDoc;
9 import javax.xml.transform.TransformerFactory JavaDoc;
10 import javax.xml.transform.stream.StreamSource JavaDoc;
11 import org.dom4j.Document;
12 import org.dom4j.DocumentHelper;
13 import org.dom4j.Element;
14 import org.dom4j.Node;
15 import org.dom4j.XPath;
16 import org.dom4j.io.DOMWriter;
17 import org.dom4j.io.DocumentResult;
18 import org.dom4j.io.DocumentSource;
19 import org.dom4j.io.OutputFormat;
20 import org.dom4j.io.SAXReader;
21 import org.dom4j.io.XMLWriter;
22
23 public class PerfDOM4J {
24
25     public static void main(String JavaDoc args[]) {
26         Document doc;
27
28         try {
29             int numrec = 1;
30
31             numrec = 10000;
32             System.out.println("\n10000 Elements ------------------");
33             doc = PerfDOM4J.createDocument(numrec, 20, 1);
34             PerfDOM4J.createW3CDOM(doc);
35             PerfDOM4J.write(doc, "dom4j_" + numrec + ".xml");
36             // PerfDOM4J.parse(numrec,1);
37
// PerfDOM4J.transform(doc,"item.xslt",1);
38
PerfDOM4J.xpath(doc, "/*/*/Attr1x1", 1);
39             PerfDOM4J.xpath(doc, "/*/*/Attr1x5000", 1);
40             PerfDOM4J.xpath(doc, "/*/*/Attr1x9999", 1);
41             PerfDOM4J.xpathNodes(doc, "/*/*/Attr1x1", 1);
42             PerfDOM4J.xpathNodes(doc, "/*/*/Attr1x5000", 1);
43             PerfDOM4J.xpathNodes(doc, "/*/*/Attr1x9999", 1);
44             PerfDOM4J.xpathNodes(doc, "/*/Item", 3);
45
46             numrec = 1000;
47             System.out.println("\n1000 Elements -------------------");
48             doc = PerfDOM4J.createDocument(numrec, 20, 1);
49             PerfDOM4J.createW3CDOM(doc);
50             PerfDOM4J.write(doc, "dom4j_" + numrec + ".xml");
51             PerfDOM4J.parse(numrec, 3);
52             PerfDOM4J.transform(doc, "item.xslt", 3);
53             PerfDOM4J.xpath(doc, "/*/*/Attr1x1", 3);
54             PerfDOM4J.xpath(doc, "/*/*/Attr1x500", 3);
55             PerfDOM4J.xpath(doc, "/*/*/Attr1x999", 3);
56             PerfDOM4J.xpathNodes(doc, "/*/*/Attr1x1", 3);
57             PerfDOM4J.xpathNodes(doc, "/*/*/Attr1x500", 3);
58             PerfDOM4J.xpathNodes(doc, "/*/*/Attr1x999", 3);
59             PerfDOM4J.xpathNodes(doc, "/*/Item", 10);
60
61             numrec = 100;
62             System.out.println("\n100 Elements --------------------");
63             doc = PerfDOM4J.createDocument(numrec, 20, 10);
64             PerfDOM4J.createW3CDOM(doc);
65             PerfDOM4J.write(doc, "dom4j_" + numrec + ".xml");
66             PerfDOM4J.parse(numrec, 10);
67             PerfDOM4J.transform(doc, "item.xslt", 10);
68             PerfDOM4J.xpath(doc, "/*/*/Attr1x1", 10);
69             PerfDOM4J.xpath(doc, "/*/*/Attr1x50", 10);
70             PerfDOM4J.xpath(doc, "/*/*/Attr1x99", 10);
71             PerfDOM4J.xpathNodes(doc, "/*/*/Attr1x1", 10);
72             PerfDOM4J.xpathNodes(doc, "/*/*/Attr1x50", 10);
73             PerfDOM4J.xpathNodes(doc, "/*/*/Attr1x99", 10);
74             PerfDOM4J.xpathNodes(doc, "/*/Item", 100);
75
76             numrec = 10;
77             System.out.println("\n10 Elements ---------------------");
78             doc = PerfDOM4J.createDocument(numrec, 20, 100);
79             PerfDOM4J.createW3CDOM(doc);
80             PerfDOM4J.write(doc, "dom4j_" + numrec + ".xml");
81             PerfDOM4J.parse(numrec, 100);
82             PerfDOM4J.transform(doc, "item.xslt", 10);
83             PerfDOM4J.xpath(doc, "/*/*/Attr1x5", 1000);
84             PerfDOM4J.xpathNodes(doc, "/*/*/Attr1x1", 1000);
85             PerfDOM4J.xpathNodes(doc, "/*/*/Attr1x5", 1000);
86             PerfDOM4J.xpathNodes(doc, "/*/*/Attr1x9", 1000);
87             PerfDOM4J.xpathNodes(doc, "/*/Item", 1000);
88
89             numrec = 1;
90             System.out.println("\n1 Element -----------------------");
91             doc = PerfDOM4J.createDocument(numrec, 20, 100);
92             PerfDOM4J.createW3CDOM(doc);
93             PerfDOM4J.write(doc, "dom4j_" + numrec + ".xml");
94             PerfDOM4J.parse(numrec, 100);
95             PerfDOM4J.transform(doc, "item.xslt", 10);
96             PerfDOM4J.xpath(doc, "/*/*/Attr1x1", 1000);
97             PerfDOM4J.xpathNodes(doc, "/*/*/Attr1x1", 1000);
98             PerfDOM4J.xpathNodes(doc, "/*/Item", 1000);
99
100         } catch (IOException JavaDoc ie) {
101             ie.printStackTrace();
102         }
103     }
104
105     public static Document createDocument(int iNumRecs, int iNumFlds, int pp) {
106
107         double start = System.currentTimeMillis();
108         Document document = null;
109         for (int kk = 0; kk < pp; kk++) {
110             document = DocumentHelper.createDocument();
111
112             Element root = document.addElement("ItemResultSet");
113             for (int ii = 0; ii < iNumRecs; ii++) {
114
115                 Element Record = root.addElement("Item");
116                 for (int jj = 0; jj < iNumFlds; jj++) {
117                     Record.addElement("Attr" + jj + "x" + ii).addText(
118                             "123456789");
119                 }
120
121             }
122         }
123         double end = System.currentTimeMillis();
124
125         System.err.println("Creation time : " + (end - start) / pp);
126
127         return document;
128     }
129
130     public static Document parse(int iNumRecs, int kk) {
131
132         File JavaDoc file = new File JavaDoc("dom4j_" + iNumRecs + ".xml");
133         double start = System.currentTimeMillis();
134         Document document = null;
135         for (int pp = 0; pp < kk; pp++) {
136             try {
137                 SAXReader SAXrd = new SAXReader();
138                 SAXrd.read(file);
139             } catch (Exception JavaDoc e) {
140                 e.printStackTrace();
141             }
142         }
143         double end = System.currentTimeMillis();
144
145         System.err.println("Parsing time for :" + 1.000 * (end - start) / kk);
146
147         return document;
148     }
149
150     public static void createW3CDOM(Document doc) {
151
152         long start = System.currentTimeMillis();
153         try {
154             DOMWriter dw = new DOMWriter();
155             dw.write(doc);
156
157         } catch (Exception JavaDoc de) {
158         }
159
160         long end = System.currentTimeMillis();
161
162         System.err.println("W3C Creation time for :" + (end - start));
163     }
164
165     public static void write(Document document, String JavaDoc name) throws IOException JavaDoc {
166
167         long start = System.currentTimeMillis();
168         // lets write to a file
169

170         try {
171             OutputFormat format = OutputFormat.createPrettyPrint();
172             XMLWriter writer = new XMLWriter(new FileWriter JavaDoc(name), format);
173             writer.write(document);
174             writer.close();
175
176         } catch (IOException JavaDoc e) {
177             e.printStackTrace();
178         }
179
180         long end = System.currentTimeMillis();
181
182         System.err.println("DOM4J File write time :" + (end - start) + " "
183                 + name);
184     }
185
186     public static void transform(Document xmlDoc, String JavaDoc xslFile, int kk) {
187
188         System.err.println("DOM4J start transform ");
189         int ii = 1;
190         try {
191             TransformerFactory JavaDoc factory = TransformerFactory.newInstance();
192             Transformer JavaDoc transformer = factory.newTransformer(new StreamSource JavaDoc(
193                     xslFile));
194
195             long start = System.currentTimeMillis();
196             for (ii = 0; ii < kk; ii++) {
197                 Source JavaDoc source = new DocumentSource(xmlDoc);
198                 DocumentResult result = new DocumentResult();
199                 transformer.transform(source, result);
200
201                 // output the transformed document
202
}
203             long end = System.currentTimeMillis();
204
205             System.err
206                     .println("DOM4J transform time :" + (end - start) / ii);
207         } catch (Exception JavaDoc e) {
208             e.printStackTrace();
209         }
210
211     }
212
213     public static void xpath(Document document, String JavaDoc xpathExp, int kk) {
214
215         long start = System.currentTimeMillis();
216         XPath xpath = document.createXPath(xpathExp);
217         for (int ii = 0; ii < kk; ii++) {
218             Node node = xpath.selectSingleNode(document);
219
220             if ((node != null) & (ii == 0)) {
221                 String JavaDoc val = node.getStringValue();
222                 // System.out.println(val);
223
}
224         }
225
226         long end = System.currentTimeMillis();
227         System.err.println("DOM4J xpath time :" + (end - start) / kk);
228     }
229
230     public static void xpathNodes(Document document, String JavaDoc xpathExp, int kk) {
231
232         long start = System.currentTimeMillis();
233         XPath xpath = document.createXPath(xpathExp);
234
235         for (int ii = 0; ii < kk; ii++) {
236
237             try {
238
239                 List JavaDoc nodeList = xpath.selectNodes(document);
240                 if ((nodeList != null) && (nodeList.size() > 0)) {
241                     Node node = (Node) nodeList.get(0);
242                     if ((node != null) & (ii == 0)) {
243                         String JavaDoc val = node.getStringValue();
244                         // System.out.println(val);
245
}
246                 }
247             } catch (Exception JavaDoc e) {
248                 e.printStackTrace();
249
250             }
251
252         }
253
254         long end = System.currentTimeMillis();
255
256         System.err.println("DOM4J xpath Nodes time :" + 1.000 * (end - start)
257                 / kk);
258     }
259
260 }
261
Free Books   Free Magazines  
Popular Tags