1 2 import java.io.File ; 3 import java.io.FileWriter ; 4 import java.io.IOException ; 5 import java.util.List ; 6 7 import javax.xml.transform.Source ; 8 import javax.xml.transform.Transformer ; 9 import javax.xml.transform.TransformerFactory ; 10 import javax.xml.transform.stream.StreamSource ; 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 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.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 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 file = new File ("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 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 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 name) throws IOException { 166 167 long start = System.currentTimeMillis(); 168 170 try { 171 OutputFormat format = OutputFormat.createPrettyPrint(); 172 XMLWriter writer = new XMLWriter(new FileWriter (name), format); 173 writer.write(document); 174 writer.close(); 175 176 } catch (IOException 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 xslFile, int kk) { 187 188 System.err.println("DOM4J start transform "); 189 int ii = 1; 190 try { 191 TransformerFactory factory = TransformerFactory.newInstance(); 192 Transformer transformer = factory.newTransformer(new StreamSource ( 193 xslFile)); 194 195 long start = System.currentTimeMillis(); 196 for (ii = 0; ii < kk; ii++) { 197 Source source = new DocumentSource(xmlDoc); 198 DocumentResult result = new DocumentResult(); 199 transformer.transform(source, result); 200 201 } 203 long end = System.currentTimeMillis(); 204 205 System.err 206 .println("DOM4J transform time :" + (end - start) / ii); 207 } catch (Exception e) { 208 e.printStackTrace(); 209 } 210 211 } 212 213 public static void xpath(Document document, String 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 val = node.getStringValue(); 222 } 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 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 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 val = node.getStringValue(); 244 } 246 } 247 } catch (Exception 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
| Popular Tags
|