1 2 import java.io.BufferedWriter ; 3 import java.io.File ; 4 import java.io.FileWriter ; 5 import java.io.IOException ; 6 7 import javax.xml.transform.Transformer ; 8 import javax.xml.transform.TransformerFactory ; 9 import javax.xml.transform.dom.DOMResult ; 10 import javax.xml.transform.dom.DOMSource ; 11 import javax.xml.transform.stream.StreamSource ; 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 ; 19 import org.w3c.dom.Element ; 20 import org.w3c.dom.Node ; 21 import org.w3c.dom.NodeList ; 22 23 public class PerfW3C { 24 25 public static void main(String args[]) { 26 Document 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 createDocument(int iNumRecs, int iNumFlds, int pp) { 84 85 double start = System.currentTimeMillis(); 86 Document document = null; 87 for (int kk = 0; kk < pp; kk++) { 88 document = new DocumentImpl(); 89 90 Element root = document.createElement("ItemResultSet"); document.appendChild(root); 94 95 for (int ii = 0; ii < iNumRecs; ii++) { 96 97 Element Record = document.createElement("Item"); 98 root.appendChild(Record); 99 for (int jj = 0; jj < iNumFlds; jj++) { 100 105 Element 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 document, String name) { 122 123 long start = System.currentTimeMillis(); 124 126 OutputFormat format = new OutputFormat(document); format.setIndent(2); 128 format.setLineSeparator(System.getProperty("line.separator")); 129 format.setLineWidth(80); 130 try { 131 132 FileWriter writer = new FileWriter (name); 133 BufferedWriter buf = new BufferedWriter (writer); 134 XMLSerializer FileSerial = new XMLSerializer(writer, format); 135 FileSerial.asDOMSerializer(); FileSerial.serialize(document); 137 138 } catch (IOException 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 parse(int iNumRecs, int kk) { 150 151 File file = new File ("dom4j_" + iNumRecs + ".xml"); 152 double start = System.currentTimeMillis(); 153 Document 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 e) { 160 e.printStackTrace(); 161 } 162 } 163 164 double end = System.currentTimeMillis(); 165 166 System.err.println("Parsing time for :" + iNumRecs + " " 169 + (end - start) / kk); 170 171 return document; 172 } 173 174 public static void transform(Document xmlDoc, String xslFile, int kk) { 175 int ii = 1; 176 try { 177 TransformerFactory factory = TransformerFactory.newInstance(); 178 Transformer transformer = factory.newTransformer(new StreamSource ( 179 xslFile)); 180 181 long start = System.currentTimeMillis(); 182 for (ii = 0; ii < kk; ii++) { 183 DOMSource source = new DOMSource (xmlDoc); 184 DOMResult result = new DOMResult (); 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 e) { 191 e.printStackTrace(); 192 } 193 194 } 195 196 public static void xpath(Document document, String xpathExp, int pp) { 197 198 long start = System.currentTimeMillis(); 199 200 for (int ii = 0; ii < pp; ii++) { 201 202 try { 203 204 Node node = XPathAPI.selectSingleNode(document, xpathExp); 205 if ((node != null) & (ii == 0)) { 206 String val = node.getNodeName(); 207 } 209 } catch (Exception 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 document, String xpathExp, int pp) { 222 223 long start = System.currentTimeMillis(); 224 225 for (int ii = 0; ii < pp; ii++) { 226 227 try { 228 229 NodeList nodeList = XPathAPI.selectNodeList(document, xpathExp); 230 if ((nodeList != null) && (nodeList.getLength() > 0)) { 231 Node node = nodeList.item(0); 232 if ((node != null) & (ii == 0)) { 233 String val = node.getNodeName(); 234 } 236 } 237 } catch (Exception 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
|