You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by jb...@apache.org on 2014/11/29 21:20:00 UTC

svn commit: r1642472 - /tomcat/taglibs/standard/trunk/impl/src/test/java/org/apache/taglibs/standard/tag/common/xml/ForEachTagTest.java

Author: jboynes
Date: Sat Nov 29 20:20:00 2014
New Revision: 1642472

URL: http://svn.apache.org/r1642472
Log:
Add benchmark using Xalan's public XPath API. Has same DTM re-creation problem as JAXP XPath

Modified:
    tomcat/taglibs/standard/trunk/impl/src/test/java/org/apache/taglibs/standard/tag/common/xml/ForEachTagTest.java

Modified: tomcat/taglibs/standard/trunk/impl/src/test/java/org/apache/taglibs/standard/tag/common/xml/ForEachTagTest.java
URL: http://svn.apache.org/viewvc/tomcat/taglibs/standard/trunk/impl/src/test/java/org/apache/taglibs/standard/tag/common/xml/ForEachTagTest.java?rev=1642472&r1=1642471&r2=1642472&view=diff
==============================================================================
--- tomcat/taglibs/standard/trunk/impl/src/test/java/org/apache/taglibs/standard/tag/common/xml/ForEachTagTest.java (original)
+++ tomcat/taglibs/standard/trunk/impl/src/test/java/org/apache/taglibs/standard/tag/common/xml/ForEachTagTest.java Sat Nov 29 20:20:00 2014
@@ -34,6 +34,7 @@ import org.junit.Ignore;
 import org.junit.Test;
 
 import org.apache.xml.dtm.DTMIterator;
+import org.apache.xpath.CachedXPathAPI;
 import org.apache.xpath.XPath;
 import org.apache.xpath.XPathContext;
 import org.apache.xpath.objects.XObject;
@@ -46,6 +47,7 @@ import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
+import org.w3c.dom.traversal.NodeIterator;
 
 /**
  */
@@ -141,11 +143,11 @@ public class ForEachTagTest {
             tag.doFinally();
         }
         time += System.nanoTime();
-        System.err.println("time = " + time/1000000 + "ms.");
+        System.err.println("time = " + time / 1000000 + "ms.");
         assertEquals("199999", result.str());
     }
 
-    @Ignore
+    @Ignore("Takes < 1s to run")
     @Test
     public void xalanPerformance() throws Exception{
         Document doc = newBenchmarkDocument(200000);
@@ -180,7 +182,30 @@ public class ForEachTagTest {
         assertEquals("199999", result.str());
     }
 
-    @Ignore
+    @Ignore("Takes > 20s to run")
+    @Test
+    public void cachedAPIPerformance() throws Exception{
+        Document doc = newBenchmarkDocument(200000);
+        expect(pageContext.findAttribute("doc")).andStubReturn(doc);
+        replay(pageContext);
+
+        Node result = null;
+        CachedXPathAPI api = new CachedXPathAPI();
+        api.getXPathContext().setVarStack(new JSTLVariableStack(pageContext));
+
+        long time = -System.nanoTime();
+        NodeIterator iterator = api.selectNodeIterator(XmlUtil.newEmptyDocument(), "$doc/root/a");
+        Node node = iterator.nextNode();
+        while (node != null) {
+            result = api.selectSingleNode(node, ".");
+            node = iterator.nextNode();
+        }
+        time += System.nanoTime();
+        System.err.println("time = " + time/1000000 + "ms.");
+        assertEquals("199999", result.getTextContent());
+    }
+
+    @Ignore("Takes > 20s to run")
     @Test
     public void xpathPerformance() throws Exception {
         final Document doc = newBenchmarkDocument(200000);



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org